我有一个代表用户显示的画布。 在画布上,您可以绘制并调整表示屏幕各部分的矩形。
我有一个名为Section的模型。我的viewmodel有一个集合。
每当绘制或更新(调整大小/删除)矩形时,我想以某种方式绑定并自动创建/更新List<Section>
。
我的Section.cs看起来像这样。
public class Section
{
public int SectionId { get; set; }
public int Width { get; set; }
public int Height { get; set; }
public int X { get; set; }
public int Y { get; set; }
public SectionType SectionType { get; set; }
[ForeignKey("Layout")]
public int LayoutId { get; set; }
[ForeignKey("LayoutId")]
public virtual Layout Layout { get; set; }
}
所以实际上我希望发生以下情况:
新版块
现有部分
我无法弄清楚如何将Rectangle绑定到Section以便它们被链接。当用户选择刚刚创建的Rectangle时,代码应该自动知道要更新的Section。
非常感谢任何有关如何使用最佳实践解决此问题的正确指示。
答案 0 :(得分:1)
在ViewModel中创建Section类型对象的ObservableCollection。
ObservableCollection<Section> _col;
public ObservableCollection<Section> Sections
{
get { return _col; }
set
{
_col = value;
OnPropertyChanged("Sections");
}
}
并将其绑定在您的XAML中,如下所示
<ItemsControl Name="itemsControl" ItemsSource="{Binding Path=Sections}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Background="White" Width="500" Height="500" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Fill="Red" Width="{Binding Width}" Height="{Binding Height}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Top" Value="{Binding Path=Y}" />
<Setter Property="Canvas.Left" Value="{Binding Path=X}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>