SilverlightでTreeViewのDataTemplateを作成するための複雑な要件がいくつかあります。これはMVVMデザインパターンを使用しています。これが私が欲しいものです:
Package1 Child1 Child2 Package2 Child3 Child4
コード:
Class Package
{
string _Name;
ObservableCollection<Child> _Childs;
public ObservableCollection<Child> Childs{get{return _Childs; } set{_Childs=value;}}
public string PackageName{get{return _Name; } set{_Name=value;}}
}
class Child
{
string ChildName;
public bool IsEnabled{get;set;}
public string Id{get; set;}
}
上記のデータコントラクトを使用して、ツリービューを作成する必要があります。パッケージ名はTreeItemヘッダー値です。各子アイテムは、コンテンツがChildNameである子ボックスであり、チェックボックスのEnabledプロパティは子のIsEnabledにバインドされています。
次のコードを試しましたが、ツリービューがまったく表示されません。
<sdk:TreeView x:Name="SelectedPackagesTV" ItemsSource="{Binding Packages, Mode=TwoWay}"
ItemTemplate="{StaticResource PackageTemplate}">
<sdk:TreeView.Resources>
<DataTemplate x:Key="FormsTemplate" >
<CheckBox Content="{Binding Id, Mode=TwoWay}" IsEnabled="{Binding IsEnabled}" >
</CheckBox>
</DataTemplate>
<sdk:HierarchicalDataTemplate x:Key="PackageTemplate" ItemsSource="{Binding Childs, Mode=TwoWay}" ItemTemplate="{StaticResource FormsTemplate}">
<TextBlock Text="{Binding Name, Mode=TwoWay}" />
</sdk:HierarchicalDataTemplate>
</sdk:TreeView.Resources>
</sdk:TreeView>
注:ビューモデルコンストラクターのPackagesCollectionに値を入力しています。それは問題になりますか?何か足りないものがあれば教えてください。また、これを解決するための最善の方法を提案してください。
前もって感謝します。