2008-12-24 113 views
0

我有一個像這樣的層次結構 - Factory> machines> components> controls其中「>」可以被讀爲 as「contains a list of」。WPF設計問題涉及樹視圖

這很適合使用HierarchicalDataTemplates的TreeView。現在說我想將複選框添加到樹中,以便用戶可以創建需要控制的樹的「視圖」。目前我的模板是綁定到實際的機器/組件/控制對象,像這樣的數據...

<HierarchicalDataTemplate DataType="{x:Type src:Component}" ItemsSource = "{Binding Path=Controls}"> 
    <StackPanel Orientation="Horizontal"> 
     <CheckBox IsChecked="False" /> 
     <TextBlock Text="{Binding Path=Name}"/> 
    </StackPanel> 
</HierarchicalDataTemplate> 

我不想改變我的機器/組件/控件類的代碼,能夠處理「看「創作。換句話說,我想保持「數據模型」代碼和UI代碼分離。例如,要處理複選框,我需要將其綁定到Control的IsSelected屬性。我發現自己爲這些類添加了一堆屬性和通知代碼。 我試過的另一種方法是爲每個機器/組件/控制類創建一個「視圖」類。通過這種方法,我最終在「視圖」類中創建了數據副本,並且必須將其與實際數據同步。最佳做法是什麼?

回答