C# TreeView';对象绑定到另一个视图
我需要在下面列出的一个应用程序中实现一个要求。我有一个疑问,如何在WPF中实现这一点C# TreeView';对象绑定到另一个视图,c#,.net,wpf,C#,.net,Wpf,我需要在下面列出的一个应用程序中实现一个要求。我有一个疑问,如何在WPF中实现这一点 我有一个主WPF窗口,它在左侧分为树状视图,在右侧有一些文本框、组合框和复选框 我想用存储在树节点标记值中的对象的相应值填充右侧表单 每当我单击树状视图上的特定节点时,右侧的表单字段都会在其标记值中显示对象存储的内容,如果我在右侧表单字段中进行一些修改,这些内容最终将被更新 有人能给一个链接到示例应用程序吗 您的问题涉及WPF中的一个非常基本的概念,即。请从这篇文章开始 请注意,将感兴趣的/可编辑的对象放入Tr
有人能给一个链接到示例应用程序吗 您的问题涉及WPF中的一个非常基本的概念,即。请从这篇文章开始 请注意,将感兴趣的/可编辑的对象放入
TreeViewItem
的Tag
属性中对于UI设计来说是一个非常糟糕的主意。标记
属性很容易从代码中访问,但是从UI绑定到-all将非常困难/复杂,因为树视图
本身只公开一个SelectedItem/SelectedIndex
属性,该属性通常返回数据项,而不是树视图项
请使用以下示例:
<StackPanel Orientation="Horizontal">
<TreeView x:Name="twi">
<TreeViewItem Tag="one" Header="111">
<TextBlock Text="First" />
</TreeViewItem>
<TreeViewItem Tag="two" Header="222">
<TextBlock Text="Second" />
</TreeViewItem>
<TreeViewItem Tag="three" Header="333">
<TextBlock Text="Third" />
</TreeViewItem>
</TreeView>
<StackPanel Orientation="Vertical">
<TextBlock Text="The text:" />
<TextBlock Text="{Binding ElementName=twi, Path=SelectedItem}" />
<TextBlock Text="{Binding ElementName=twi, Path=SelectedItem.Tag}" />
<TextBlock Text="{Binding ElementName=twi, Path=SelectedItem.Tag.Name}" />
<TextBlock Text="{Binding ElementName=twi, Path=SelectedItem.Tag.Surname}" />
</StackPanel>
</StackPanel>
当然,创建一些示例数据并将其作为其ItemsSource提供给treeView。
这样,TreeView将自动创建项目,应用模板,并且每次单击SelectedItem时,SelectedItem不会为您提供TreeView项目
s,而是提供可直接编辑的-withPerson
。因此,在窗口的右侧,简单绑定到SelectedItem.Name
将“正常工作”,如果设置为双向,它将直接更新此人
免责声明:我没有运行代码。可能有错误和打字错误。代码只是为了展示总体思路。你好,Quetzalcatl,感谢您提供这么好的示例。将对此进行测试并接受作为答案。
public class Person
{
// properties
public string Name { .... }
public string Surname { ... }
public List<Person> Subordinates { .... }
}
<StackPanel Orientation="Horizontal">
<TreeView x:Name="twi">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Subordinates}">
<TextBlock>
<Run Text="{Binding Name}" />
<Run Text=" " />
<Run Text="{Binding Surname}" />
</TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<StackPanel Orientation="Vertical">
<TextBlock Text="The selected person:" />
<TextBox Text="{Binding ElementName=twi, Path=SelectedItem.Name, Mode=TwoWay}" />
<TextBox Text="{Binding ElementName=twi, Path=SelectedItem.Surname, Mode=TwoWay}" />
</StackPanel>
</StackPanel>