オブジェクトをロードして適切に表示する階層データテンプレートを備えたWPFツリービューがあります。ツリービューの子の中で、TextBlockを使用して、ツリービューのオブジェクトの「名前」とその横にあるチェックボックスを表示しています。参考までに私のコードは次のとおりです。
<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に保存すると始まります。ご覧のとおり、オブジェクトの「名前」のみを保存していますが、この名前にはチェックボックスへのフックがないため、戻って関連するチェックボックスを「検索」することはできません。
これらの保存されたファイルの1つをロードするオプションをユーザーに与えるとき、ツリーをトラバースして、保存されたチェックボックスをオンにします。問題は、チェックボックスに名前、またはUIDがないことです。これは許可されていないため、バインドによって割り当てることができません。
ツリービューをトラバースして、保存された名前をツリー内の各要素の子の名前と比較し、その特定のチェックボックスをオンにする方法はありますか、それとも別の方法でプログラムする必要がありますか?