Dalam aplikasi WPF, anda mungkin perlu menambah satu set segi empat tepat mengikut data. Ini boleh dilaksanakan oleh Model Model-View-View Model (MVVM).
Pertimbangkan model pandangan, yang mengandungi koleksi segi empat tepat abstrak yang ditunjukkan oleh objek
:
RectItem
<code class="language-csharp">public class RectItem { public double X { get; set; } public double Y { get; set; } public double Width { get; set; } public double Height { get; set; } }</code>
<code class="language-csharp">public class ViewModel { public ObservableCollection<RectItem> RectItems { get; set; } = new ObservableCollection<RectItem>(); }</code>
Canvas
untuk memaparkan koleksi ini: ItemsPanel
ItemsControl
<code class="language-xml"><ItemsControl ItemsSource="{Binding RectItems}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Canvas /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemContainerStyle> <Style TargetType="ContentPresenter"> <Setter Property="Canvas.Left" Value="{Binding X}" /> <Setter Property="Canvas.Top" Value="{Binding Y}" /> </Style> </ItemsControl.ItemContainerStyle> <ItemsControl.ItemTemplate> <DataTemplate> <Rectangle Fill="Black" Height="{Binding Height}" Width="{Binding Width}" /> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl></code>
RenderTransform
<code class="language-xml"><ItemsControl ItemsSource="{Binding RectItems}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Canvas /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <Rectangle Fill="Black" Height="{Binding Height}" Width="{Binding Width}"> <Rectangle.RenderTransform> <TranslateTransform X="{Binding X}" Y="{Binding Y}" /> </Rectangle.RenderTransform> </Rectangle> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl></code>
Atas ialah kandungan terperinci Bagaimanakah saya boleh memaparkan segi empat tepat secara dinamik dalam aplikasi WPF menggunakan corak MVVM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!