次のような方法がありますか?私は基本的に希望は何条件が満たされなくなったときに元に戻されないDataTrigger
<Style TargetType="{x:Type: TreeViewItem}">
<Style.Triggers>
<DataTrigger Binding="~Complex Binding~" Value="True" DoNotUnset="True">
<Setter Property="IsExpanded" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
は、あなたがする場合は、これが「いいえ元に戻すDataTrigger」になることです。 Valueがもはや "True"でなくなったら、 "IsExpanded"を以前の値に戻すことは望ましくありません。
これは入力操作でこれを行う私の試みですが、これにも問題があります。
<Style TargetType="{x:Type: TreeViewItem}">
<Style.Triggers>
<DataTrigger Binding="~Complex Binding~" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<BeginStoryboard.Storyboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="(IsExpanded)" Duration="00:00:01" FillBehavior="Stop">
<BooleanKeyFrameCollection>
<DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="True"/>
</BooleanKeyFrameCollection>
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard.Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
まずこれがめちゃくちゃ冗長ですが、BooleanAnimationUsingKeyFramesの期間中、第二に、この唯一の作品。 FillBehaviorを「HoldEnd」に変更した場合は正しく表示されますが、ユーザーはクリックでツリービュー項目を展開することができなくなりました(キーボードを使用してもまだ奇妙なことですが)。
私は再帰的なItemsGenerator.GetItemContainerFromIndex(i)ループを構築したくないため、バインドによってすべてのアイテムをツリービューで展開しようとしています。私はまだ私のコードの他の領域で同様の "元に戻すデータなし"を使用したいと思います。