2012-01-18 81 views
1

我有一個TabControl有其SelectedIndex屬性綁定到一個布爾值,像這樣:爲什麼我的DataTrigger沒有更新TabControl的SelectedIndex屬性?

<TabControl> 
    <TabControl.Style> 
     <Style TargetType="TabControl"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=IsRunning, UpdateSourceTrigger=PropertyChanged}" Value="True"> 
        <Setter Property="SelectedIndex" Value="1" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TabControl.Style> 
    <TabItem Header="Foo" /> 
    <TabItem Header="Bar" /> 
</TabControl> 

TabControl只能切換到第二個選項卡,如果IsRunning屬性變爲True,但現在的問題是,只要IsRunning屬性發生更改,TabControl就不會自行更新以顯示第二個TabItem

有沒有辦法通過XAML做到這一點,或者我有我的視圖模型來實現SelectedIndex屬性,直接結合到TabControlSelectedIndex

+1

適用於此。您的底層ViewModel(TabControl的DataContext)在IsRunning更改時引發PropertyChanged事件嗎? – 2012-01-18 10:42:28

+0

有意思......是的,PropertyChanged事件肯定會引發。 – Flagbug 2012-01-18 10:52:03

+1

如果將TabControl上的SelectedIndex設置爲默認值[這會成爲問題](http://msdn.microsoft.com/zh-cn/library/ms743230.aspx)。 – 2012-01-18 11:21:25

回答

0

這對我來說就像預期的那樣,如果屬性更改爲真正的標籤開關。也許有一個problem with the binding? (或者我誤解了這個問題?)

0

這是一條古老的線索,但誰知道別人可能會對此產生影響,就像我尋找答案一樣。

解決方案:只需在TabControl樣式中添加一個setter以將SelectedIndex設置爲初始值即可。例如Setter Property =「SelectedIndex」Value =「0」

<TabControl> 
    <TabControl.Style> 
     <Style TargetType="TabControl"> 
      <Setter Property="SelectedIndex" Value="0" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=IsRunning, UpdateSourceTrigger=PropertyChanged}" Value="True"> 
        <Setter Property="SelectedIndex" Value="1" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TabControl.Style> 
    <TabItem Header="Foo" /> 
    <TabItem Header="Bar" /> 
</TabControl> 
相關問題