我有一个带有两个使用控件的Window。一个封装了TreeView控件,另一个封装了所选TreeViewItems详细信息的字符串表示。
TreeView控件已经足够了 - 它将使用内容项填充自身。每个TreeViewItem都有一个datacontext。
以下是我需要发生的事情:
在处理Selected事件方面,我的方法是否正确?如何从我选择的项目数据上下文中获取属性值?
谢谢。
答案 0 :(得分:0)
将属性绑定到TreeView的SelectedItem可以解决您的问题。下面的代码表达了我正在考虑的内容。对于您拥有的两个UC,您可以为SelectedItem公开一个属性。
XAML:
<TreeView x:Name="Tree1">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<TextBlock Text="{Binding ElementName=Tree1,Path=SelectedItem.Name}" />
物品实体
public class Item
{
public event PropertyChangedEventHandler PropertyChanged;
private string name;
private Collection<Item> items;
public Collection<Item> Items { get { return items; } }
public Item()
{
items = new Collection<Item>();
}
public string Name
{
get { return name; }
set { name = value; OnPropertyChanged("Name"); }
}
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
绑定来源
Item item = new Item { Name = "A" };
item.Items.Add(new Item { Name = "A_1" });
item.Items.Add(new Item { Name = "A_2" });
item.Items.Add(new Item { Name = "A_3" });
Tree1.ItemsSource = new Collection<Item>() { item };