2012-10-03 19 views
0

我有一個TreeView,並且TreeView使用HierarchicalDataTemplates有多個圖層。每個TreeViewItem當前顯示它所表示的對象的「名稱」。我現在需要將複選框添加到我已經發現的樹的子節點上,但是我沒有想到當它被選中時訪問複選框的名稱。如果從數據動態創建複選框,如何分配和訪問WPF複選框的Name屬性?

更具體地說,我需要檢查複選框的名稱,因爲我需要相應地對某些數據應用過濾器。如何檢查每個CheckBox的名稱,如果檢查TreeViewItem的對象的CheckBox和Name是否是從數據動態創建的?

回答

1

我假設你有你的viewmodel中的樹中的所有複選框項都綁定到相應的命令。

綁定到命令並傳送到ComboBoxItem的當前名稱作爲CommandParameter

<DataTemplate x:Key="ListBoxItemTemplate" DataType="{x:Type ListBoxItem}"> 
     <CheckBox Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}, 
        Path=DataContext.CheckBoxItemCheckedCommand}" 
        CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Name}"/>      
    </DataTemplate> 
+0

欣賞響應,不太熟悉命令。你能給我舉一個例子,說明CheckBoxItemCheckedCommand在viewmodel中的樣子,以及如何設置它與事件或其他事物。 –

+0

當然,我會在稍後將它添加到我的答案中。 –