我有一些复杂的要求要在 Silverlight 中为 TreeView 创建一个 DataTemplate。这是使用 MVVM 设计模式。这就是我想要的:
套餐 1 孩子 1 孩子 2 套餐 2 孩子 3 孩子 4
代码:
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;}
}
使用上面的数据契约,我应该创建一个树视图:Package Name being TreeItem header value。每个子项都是一个子框,内容为 ChildName,复选框的 Enabled 属性绑定到 Child 的 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。这会是个问题吗?如果我遗漏任何东西,请告诉我,并建议我解决此问题的最佳方法。
提前致谢。