Связывание TreeViewItem - PullRequest
       7

Связывание TreeViewItem

0 голосов
/ 13 декабря 2011

Я написал библиотеку действий 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 голосов
/ 13 декабря 2011

К сожалению, то, чего вы хотите достичь, не работает из коробки.Вот несколько разных подходов к решению: Привязка данных к SelectedItem в 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...