【发布时间】:2012-06-10 23:39:10
【问题描述】:
我有一些复杂的要求要在 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;}
}
使用上面的数据契约我应该创建一个树视图: 包名称为 TreeItem 标头值。 每个子项都是一个子框,内容为 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。这会是个问题吗? 如果我遗漏了什么,请告诉我,并建议我解决此问题的最佳方法。
提前致谢。
【问题讨论】:
-
我们能得到你的树吗?
标签: mvvm silverlight-4.0 mvvm-light silverlight-toolkit