Свойства зависимости привязки - PullRequest
0 голосов
/ 20 июля 2010

Итак, здесь я создаю пользовательский элемент управления.Он состоит из дерева, выпадающего из выпадающего списка.

На самом деле есть кнопка с элементом управления (DropTree), выпадающим из контекстного меню.Итак, у меня есть элемент управления DropTree.

public partial class DropTree : UserControl
{
    public TreeView TreeView 
    { get{return treeView;} }

    public DropTree()
    { InitializeComponent(); }
}

, чтобы упростить его, я сделал элемент управления TreeView общедоступным, затем у меня есть основной элемент управления, который называется ComboTreeView.

Теперь мне нужно представить некоторыеВ нем есть свойства дерева, поэтому я определяю несколько свойств зависимостей:

    public static DependencyProperty SelectedItemProperty = DependencyProperty.Register("SelectedItem", typeof(object), typeof(ComboTreeView), new FrameworkPropertyMetadata { Inherits = true, IsNotDataBindable = false, DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged });

    public object SelectedItem
    {
        get { return GetValue(SelectedItemProperty); }
        set { SetValue(SelectedItemProperty, value); }
    }

, а в конструкторе это:

public ComboTreeView()
{
            InitializeComponent();
            TreeViewControl.SetBinding(TreeView.SelectedItemProperty, new Binding("SelectedItem") { Source = this, Mode = BindingMode.TwoWay });
}

и все это выглядит нормально, пока я не запустил его.Вылетает сообщение о том, что SelectedItem не может быть привязан к данным.Я не понимаю?

То же самое относится к ItemsSource и SelectedValue ... но только свойство SelectedValuePath, определенное таким образом, работает нормально.

Кто-нибудь может помочь?Или есть какой-то другой способ его правильного связывания?

PS: кстати, мне нужно использовать DataBinding для ComboTreeView в моем коде позже.

Ответы [ 2 ]

0 голосов
/ 02 августа 2010

TreeView.SelectedItem - свойство только для чтения. Вы не можете установить это, явно или через связывание. Чтобы выбрать узел в TreeView, необходимо установить для свойства TreeViewItem.IsSelected значение true.

0 голосов
/ 02 августа 2010

Попробуйте установить Binding на SelectedValue вместо SelectedItem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...