绑定TreeViewItem

时间:2011-12-13 10:42:31

标签: c# xaml binding treeview

我已经编写了一个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属性)。 我该怎么办?

1 个答案:

答案 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;
}