Как отключить узел в Silverlight Treeview? - PullRequest
1 голос
/ 09 февраля 2009

При привязке данных Treeview в Silverlight Toolkit к источнику данных, как получить доступ к самому TreeViewItem для использования его свойства IsEnabled? Или мы теряем эту функциональность и нуждаемся в поддержке какой-либо пользовательской иерархической таблицы данных?

Если я привязываю данные к дереву пользовательских объектов, как мне получить доступ к отдельному TreeViewItem для установки IsEnabled? В идеале я хочу сделать это с помощью привязки данных. Мне интересно, будет ли работать ItemContainerStyle? Я думаю, что я немного запутался в отношениях между ItemContainerStyle, ItemTemplate и т. Д. Очевидно, TreeViewItem создан для нас, когда мы привязываем данные к простым старым объектам, но как мы устанавливаем его свойства, в частности, с привязкой?

1 Ответ

3 голосов
/ 09 февраля 2009

Настоящая проблема заключается в том, что вы не можете установить привязки для TreeViewItem, который автоматически создается для каждого объекта с привязкой к данным с использованием XAML.

Различные ItemsControls, включая TreeView, позволяют переопределить создание элемента, например ListBoxItem, TreeViewItem и т. Д. Вы можете установить привязки для свойств этих элементов в коде.

Открытый класс MyTreeView Наследует TreeView

Protected Overrides Sub PrepareContainerForItemOverride(ByVal element As System.Windows.DependencyObject, ByVal item As Object)

    MyBase.PrepareContainerForItemOverride(element, item)

    Dim tvi As TreeViewItem = element
    Dim bindIsEnabled As New Binding("IsEnabled")
    bindIsEnabled.Mode = BindingMode.OneWay
    tvi.SetBinding(TreeViewItem.IsEnabledProperty, bindIsEnabled)

End Sub

Кредит поступает в пример ComboBox на http://www.fret1.com/blog/silverlight-data-binding-enableddisabled-items-on-combobox/

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