【发布时间】:2011-04-14 16:42:02
【问题描述】:
我从官方 Silverlight 工具包 Checkboxes in a TreeView example 复制了在树视图中添加复选框的基本方法。
当用户单击父 TreeViewItem 时,我希望检查所有子项,如上例所示。这在父级折叠时工作正常,单击复选框会在父级中打勾,当您展开节点时,所有子级都会在复选框中打勾。
但是,如果扩展父级,则它不起作用。尽管基础数据列表已更新,但所有子项均未更新以在复选框中打勾。
我的 XAML 如下:
<sdk:HierarchicalDataTemplate x:Key="NodeTemplate" ItemsSource="{Binding Path=Contracts}">
<StackPanel Orientation="Horizontal" ToolTipService.ToolTip="{Binding Path=Name}">
<CheckBox IsTabStop="False" IsThreeState="{Binding Path=HasContracts}" IsChecked="{Binding Path=Selected, Mode=TwoWay}" Click="CheckBox_Click" />
<TextBlock Text="{Binding Path=Name}" Tag="{Binding Path=ID}"/>
</StackPanel>
</sdk:HierarchicalDataTemplate>
<sdk:TreeView x:Name="tvClientContract" ItemsSource="{Binding Path=ClientContracts, Mode=TwoWay}" ItemTemplate="{StaticResource NodeTemplate}"/>
这绑定到 List<ClientContract> 并使用与链接示例中相同的代码。
ClientContract 对象是:
public int ID { get; set; }
public string Name { get; set; }
public List<ClientContract> Contracts { get; set; }
public bool? Selected { get; set; }
当底层List<ClientContract> 对象更新时,如何强制孩子重新绘制自己?
【问题讨论】:
标签: silverlight binding silverlight-4.0 treeview