2013-07-10 52 views
0

我有一個窗口,其中包含一個TabControl,其中包含2個TabItems。在第二個選項卡中,有一個TextBox,它綁定了我的視圖模型中的字符串屬性。我希望能夠在用戶單擊不同的選項卡(以及用戶關閉窗口)時清除此屬性(或者TextBox,因爲它將被綁定,這將通過關聯,清除屬性)。我希望我只能使用XAML實現這一點,因爲我試圖遵循MVVM模式(所以沒有代碼隱藏,我的視圖模型不應該知道在我的視圖中的TabControl或TextBox)。使用TabControl中的選定選項卡清除變量 - WPF

我已經嘗試了幾個不同的東西,不能很好地工作,雖然我在WPF上越來越好,但我對它仍然比較陌生。在我的標籤頁中,我也有ListViews和ComboBoxes,根據我的理解,這將會使SelectionChanged事件發生(與選項卡選擇更改時相同),所以我應該遠離它。任何幫助,將不勝感激。

這裏是我的嘗試之一(代碼片段顯示要點):

<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> 

我敢肯定,讀取綁定行= 「{} IsSelected」是錯誤的。但我不知道如何瞄準正確的屬性。有任何想法嗎?

回答

0

我認爲最好的方法是使用交互庫來捕獲SelectionChanged屬性並更改屬性。這將是這個樣子:

<TabControl> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="SelectionChanged"> 
      <ei:ChangePropertyAction TargetObject="{Binding Path=Path.To.ViewModel}" PropertyName="MyProperty" Value="" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</TabControl> 

您也可以選擇更改文本框的值 - 在這種情況下,你需要修改ChangePropertyAction物體看起來像這樣:

<ei:ChangePropertyAction TargetName="UserBox" PropertyName="Text" Value="" /> 
+0

我已經試過你的建議,但它不似乎沒有工作。我嘗試了不同的活動,而且沒有人迴應。 – AXG1010

0

您需要設置選項卡的SelectedIndex = -1,其內容要在其他選項卡上單擊清除。

SelectedIndex = -1是默認選項卡,所以基本上我們將此選項卡設置爲默認選項卡。現在條件變成

如果SelectedIndex! = -1,文字應清除 或在應用程序關閉,文本應該被清除

我提供你的邏輯,代碼可以寫:)

相關問題