0

次のような TreeView があります。

Section1
  item1
  item2
Section2
  item1
  item2

私のプロジェクトでは、「セクション」要素を選択できないようにする必要があるため、xaml では次のように無効にしました。

<TreeView.ItemContainerStyle>
     <Style TargetType="{x:Type TreeViewItem}">
     <Setter Property="Focusable" Value="{Binding HasDetails}"/>
     </Style>
</TreeView.ItemContainerStyle>

これはうまく機能します。「アイテム」要素は選択できますが、「セクション」要素は選択できません。私の問題は、「アイテム」を選択してから「セクション」を折りたたむと、「セクション」要素が選択されることです。これを防ぐにはどうすればよいですか?

4

1 に答える 1

0

TreeViewItem でSelected イベント (参照: http://msdn.microsoft.com/en-us/library/system.windows.controls.treeviewitem.selected.aspx ) を使用できます。

このイベントが Section1 または Section2 に対して発生すると、TreeViewItem の IsSelected プロパティ (参照: http://msdn.microsoft.com/en-us/library/system.windows.controls.treeviewitem.isselected.aspx ) を設定できます。間違い。

TreeView 自体でSelectedItemChanged イベント (参照: http://msdn.microsoft.com/en-us/library/system.windows.controls.treeview.selecteditemchanged.aspx ) を使用して、選択されている特定の項目を選択解除することもできます。 .

IsSelect プロパティを設定する前に、必ずサブスクライブを解除してください。そうしないと、イベントが複数回発生する可能性があります。また、IsSelect プロパティを設定した後、忘れずにイベントを再度サブスクライブしてください。

編集: またはさらに良いことに、TreeViewItem にある Collapsed イベント (参照: http://msdn.microsoft.com/en-us/library/system.windows.controls.treeviewitem.collapsed.aspx ) を使用します。

于 2013-03-29T02:08:51.453 に答える