目標: 1 回のクリックでツリービュー項目を展開しようとしています。選択したノードにアクセスし、DataContext
展開/折りたたみのプロパティを設定する必要があります。
私が試した
ことは、 (MLBU)&のために着EventSetter
ました。ただし、リーフ ノードをクリックすると、MLBU ハンドラーで送信者のヘッダー プロパティがリーフではなく親として取得されます。はリーフ コントロールを正しく指しています。しかし、それを使用する場合は、ソースのすべてのタイプを判別してから値を取得する必要があります。TreeViewItem
MouseLeftButtonUp
PreviewMouseLeftButtonUp
OriginalSource
これを達成する他の方法はありますか?
編集
イベントを設定するための XAML:
<Style TargetType="TreeViewItem" BasedOn="{StaticResource SomeStyle}">
<Setter Property="IsExpanded" Value="{Binding Path=IsExpanded, Mode=TwoWay}"/>
<EventSetter Event="PreviewMouseLeftButtonUp" Handler="OnPreviewMouseLeftButtonUp"/>
<EventSetter Event="MouseLeftButtonUp" Handler="OnMouseLeftButtonUp"/>
</Style>
ツリービュー アイテムには、要件に基づいて異なるデータ テンプレートがあります。したがって、OriginalSource では、Image
またはSystem.Windows.Documents.Run
(来てLabel
) のいずれかになります。したがって、作成するコントロールの種類ごとに if-else を配置する必要があります。一方、私の DataContext には、展開するように設定できるプロパティを持つ各アイテムのトップレベルのインターフェイスがあります。したがって、一般的な変換が機能します。