【发布时间】:2012-10-20 05:12:01
【问题描述】:
我有一个带有分层数据模板的 WPF 树视图,可以加载对象并很好地显示它们。在树视图的子视图中,我使用文本块在树视图中显示对象的“名称”,旁边还有一个复选框。这是我的参考代码:
<DockPanel Name="test1" Margin="10,10,0,10" VerticalAlignment="Stretch" Grid.Row="3" Grid.RowSpan="7" Grid.Column="0">
<DockPanel.Resources>
<local:CheckBoxCommand x:Key="cbc"></local:CheckBoxCommand>
<src:TreeViewFilter x:Key="MyList" />
<HierarchicalDataTemplate DataType="{x:Type src:TreeViewParent}" ItemsSource="{Binding Path=OrderAttributes}">
<TextBlock Text="{Binding Path=NameAndCount}" FontSize="24"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type src:OrderAttribute}" ItemsSource="{Binding Path=OrderAttributes}">
<StackPanel Name="test" Orientation="Horizontal" VerticalAlignment="Center">
<CheckBox Command="{StaticResource cbc}"
CommandParameter="{Binding Path=NameAndParent}" Visibility="{Binding Path=CheckBoxVisible}" VerticalAlignment="Center">
</CheckBox>
<TextBlock Text="{Binding Path=NameAndCount}" FontSize="16"/>
</StackPanel>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView Name="treeView1" BorderThickness="2" ItemsSource="{Binding Source={StaticResource MyList}, UpdateSourceTrigger=PropertyChanged}" TreeViewItem.Selected="filterByBatchStatus"/>
</DockPanel>
当用户选中树中的复选框时,我的应用程序中会根据选中的复选框发生某些事情。我知道正在检查哪个复选框的方法是通过命令传递参数,并且该参数绑定到对象的“NameAndParent”。所有这些都可以正常工作。
当我让用户选择保存已选中的复选框并将复选框旁边的每个对象的“名称”保存到 XML 时,我的问题就开始了。如您所见,我只是保存了对象的“名称”,但这个名称没有钩到复选框,所以我无法返回并“找到”关联的复选框。
当我让用户选择加载这些已保存文件之一时,我想遍历树并选中已保存的框。问题是复选框没有名称或 UID,我无法通过绑定为它们分配一个,因为这是不允许的。
是否有遍历树视图并以某种方式将保存的名称与树中每个子元素的名称进行比较,然后选中特定的复选框,或者这是否必须以不同的方式进行编程?
【问题讨论】:
标签: wpf dynamic navigation treeview controls