我已经编写了一个WPF活动库。在其中一个活动中,我使用TreeView在其中显示了一些信息:
...
<TreeView x:Name= "myTreeView" Grid.Row="0" FontFamily="Tahoma" FontSize="10">
<TreeViewItem Header="Item 1">
<TreeViewItem Header="Item 11" >
<TreeViewItem Header="Item 111"/>
<TreeViewItem Header="Item 112" />
</TreeViewItem>
<TreeViewItem Header="Item 12" >
<TreeViewItem Header="Item 121" />
<TreeViewItem Header="Item 122" />
<TreeViewItem Header="Item 123" />
</TreeViewItem>
<TreeViewItem Header="Item 13" >
<TreeViewItem Header="Item 131" />
<TreeViewItem Header="Item 132" />
</TreeViewItem>
</TreeViewItem>
</TreeView>
...
我在Code-Activity方面的属性是这样的:
public InArgument<TreeViewItem> Branch {
get{return _branch;}
set
{
if (this._branch != value)
{
this._branch = value;
OnPropertyChanged("Branch");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this,
new PropertyChangedEventArgs(propertyName));
}
}
当用户点击其中一个TreeView项目时,我需要将该项目发送到我的属性(我想将其绑定到Branch属性)。 我该怎么办?
答案 0 :(得分:0)
遗憾的是,您想要实现的目标无法实现。 以下是解决方案的一些不同方法: Data binding to SelectedItem in a WPF Treeview
最简单的是拥有一些CodeBehind:
<强> XAML:强>
<TreeView SelectedItemChanged="myTreeView_SelectedItemChanged"
代码背后:
private void myTreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
var treeViewItem = e.NewValue as TreeViewItem;
(myTreeView.DataContext as MyViewModel).Branch = treeViewItem;
}