我已经编写了一个WPF library.In活动,其中一个活动我使用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属性)。我该怎么做呢?
发布于 2011-12-13 19:06:32
不幸的是,你想要实现的东西不是开箱即用的。以下是一些不同的解决方案方法: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;
}https://stackoverflow.com/questions/8487810
复制相似问题