C# 视图模型视图关系/链接/同步
第三,尝试描述问题:C# 视图模型视图关系/链接/同步,c#,wpf,view,viewmodel,C#,Wpf,View,Viewmodel,第三,尝试描述问题: 尝试1: Try2: Try3: 我有一些视图模型的类: public class Node : INotifyPropertyChanged { Guid NodeId { get; set; } public string Name { get; set; } } public class Connection: INotifyPropertyChanged { public Node
- 尝试1:
- Try2:
- Try3:
public class Node : INotifyPropertyChanged
{
Guid NodeId { get; set; }
public string Name { get; set; }
}
public class Connection: INotifyPropertyChanged
{
public Node StartNode { get; set; }
public Node EndNode { get; set; }
}
public class SettingsPackModel
{
public List<Node> Nodes { get; private set; }
public List<Connection> Connections { get; private set; }
}
公共类节点:INotifyPropertyChanged
{
Guid节点ID{get;set;}
公共字符串名称{get;set;}
}
公共类连接:INotifyPropertyChanged
{
公共节点开始节点{get;set;}
公共节点EndNode{get;set;}
}
公共类设置打包模型
{
公共列表节点{get;private set;}
公共列表连接{get;private set;}
}
我还有一些模板来显示这些模型:
<DataTemplate DataType="{x:Type vm:Node}">…</DataTemplate>
<DataTemplate DataType="{x:Type vm:Connection}">
<my:ConnectionElment StartNodeElment="???" EndNodeElment="???">
</my:ConnectionElment>
<DataTemplate>
…
但问题是连接的DataTemplate需要引用UIElement类型的两个元素,我如何传递这两个元素,我如何填充???在上面的表达中
编辑:
实际上,我想隐藏这是这次尝试的一部分,但正如我在那里描述的那样:。我会用这样的方式:
<ItemsControl ItemsSource="{Binding AllElements}"
ItemContainerStyle="{StaticResource ElementThumbVMDataTemplateStyle>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<kw:DiagramCanvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<Style x:Key="ElementThumbVMDataTemplateStyle" TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding CanvasLeft,Mode=TwoWay}" />
<Setter Property="Canvas.Top" Value="{Binding CanvasTop,Mode=TwoWay}" /> </Style >
将您正在为其创建DataTemplate的类型的对象放在DataTemplate本身内部是毫无意义的。数据模板用于创建数据的可视化表示,因此您首先需要了解如何可视化节点和连接。越位:INotifyPropertyChanged
和自动导入属性是一种奇怪的组合。我会在需要时尽快实现,但这里的问题是另一件事。如果需要的话,我可以分享更多的实现。
<DataTemplate DataType="{x:Type vm:Node}">
<kw:ElementThumb Canvas.Left="{Binding CanvasLeft,Mode=TwoWay}"
Canvas.Top="{Binding CanvasTop,Mode=TwoWay}">
</kw:ElementThumb>
</DataTemplate>