私の同僚は、ItemsControlを使用して3層のツリービューを構築するために使用するために作成した私のプロパティのために、今日私をTheDailyWTFに入れると脅迫しました。
私はあなたに足跡を負います:
ObservableCollection<KeyValuePair<string, ObservableCollection<KeyValuePair<string, ObservableCollection<MyType>>>>>;
私の目標は、Keyをヘッダーとして使用し、ValueをItemsSourceとして3つのレベルで使用するItemsControlを作成することでした。
<Style x:Key="filterTreeStyle" TargetType="ItemsControl">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<controls:TreeViewItem IsExpanded="True">
<controls:TreeViewItem.Header>
<controlsToolkit:TreeViewItemCheckBox Content="{Binding Key}"/>
</controls:TreeViewItem.Header>
<ItemsControl ItemsSource="{Binding Value}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<controls:TreeViewItem>
<controls:TreeViewItem.Header>
<controlsToolkit:TreeViewItemCheckBox Content="{Binding Key}"/>
</controls:TreeViewItem.Header>
<controlsToolkit:TreeViewItemCheckBox IsChecked="{Binding Enabled}" Content="{Binding FilterTypeText}"/>
</controls:TreeViewItem>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</controls:TreeViewItem>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
誰かがTheDailyWTFのクラッチから私を救うことができますか?これを行うためのよりクリーンな方法は何ですか。レベルの数を動的にする方法を見つけられればボーナス。