2009-02-09 5 views
1

Silverlight Toolkit의 Treeview를 데이터 소스에 바인딩하는 경우 TreeViewItem 자체에 액세스하여 IsEnabled 속성을 사용하는 방법은 무엇입니까? 아니면 그 기능을 잃어 버리고 사용자 지정 계층 적 데이터 형식으로 지원해야합니까?Silverlight Treeview에서 노드를 어떻게 비활성화합니까?

사용자 지정 개체의 트리에 데이터 바인딩하는 경우 개별 TreeViewItem에 액세스하여 IsEnabled를 설정하는 방법은 무엇입니까? 이상적으로는 데이터 바인딩을 통해이 작업을 수행하려고합니다. ItemContainerStyle을 사용하면 효과가 있을까요? ItemContainerStyle, ItemTemplate, 등의 관계에 약간 혼란스러워지고 있다고 생각합니다. 분명히 TreeViewItem은 평범한 오래된 객체를 데이터 바인딩 할 때 만들어 지지만 바인딩의 속성을 설정하는 방법은 무엇입니까?

답변

3

실제 문제는 XAML을 사용하여 각 데이터 바인딩 된 개체에 대해 자동으로 만들어진 TreeViewItem에 바인딩을 설정할 수 없다는 것입니다.

TreeView를 비롯한 다양한 ItemsControl을 사용하면 ListBoxItem, TreeViewItem 등의 항목 만들기를 재정의 할 수 있습니다. 코드에서 해당 항목의 속성에 대한 바인딩을 설정할 수 있습니다.

공공 클래스 MyTreeView 상속 트 리뷰

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 

신용 http://www.fret1.com/blog/silverlight-data-binding-enableddisabled-items-on-combobox/

에서 콤보 상자의 예로 이동
관련 문제