内部に 2 つの TabItems を持つ TabControl を含むウィンドウがあります。2 番目のタブ内には、ビュー モデル内の文字列プロパティにバインドされた TextBox があります。ユーザーが別のタブをクリックするたびに(およびユーザーがウィンドウを閉じた場合にも)、このプロパティをクリアできるようにしたい(または関連付けによってバインドされるため、プロパティをクリアする TextBox )。私はMVVMパターンに従おうとしているので、XAMLだけでこれを達成できることを望んでいます(そのため、コードビハインドはなく、ビューモデルはビューにあるTabControlまたはTextBoxを認識してはなりません)。
私はいくつかの異なることを試してみましたが、うまく機能させることができません.WPFは上手になっていますが、まだかなり慣れていません. タブ内には、ListViews と ComboBoxes もあります。私の理解では、SelectionChanged イベントがバブルされるため (タブの選択が変更された場合と同じ)、おそらくそれを避ける必要があります。どんな助けでも大歓迎です。
これが私の試みの1つです(要点を示すスニペット):
<TabControl>
<TabItem>
...Stuff in first tab goes here
</TabItem>
<TabItem Header="Rules">
<TabItem.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{IsSelected}" Value="True">
<Setter TargetName="UserBox" Property="Text" Value="" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabItem.Style>
<GroupBox>
<UniformGrid>
<ListView ItemsSource="{Binding Source={StaticResource rulesViewModel}, Path=RulesList}">
<ListView.View>
<GridView>
<GridViewColumn Header="Rules"/>
</GridView>
</ListView.View>
</ListView>
<DockPanel>
<TextBox Name="UserBox" Text="{Binding Source={StaticResource rulesViewModel}, Path=User}" />
</DockPanel>
</UniformGrid>
</GroupBox>
</TabItem>
Binding="{IsSelected}" という行が間違っていると確信しています。しかし、正しいプロパティをターゲットにする方法がわかりません。何か案は?