2012-01-18 2 views
1

私はこのようなブール値にバインドされたそのSelectedIndex性質を持っているTabControlを持っています、TrueからIsRunningプロパティが変更された場合私の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は、2番目のタブに切り替える必要がありますが、問題は今ありますIsRunningプロパティが変更されるとすぐに、TabControl自体が更新されずに2番目のTabItemが表示されます。

XAMLでこれを行う方法はありますか、のSelectedIndexに直接バインドするビューモデルにSelectedIndexプロパティを実装する必要はありますか?

+1

ここには機能します。 IsRunningが変更されたときに、基になるViewModel(TabControlのDataContext)がPropertyChangedイベントを発生させますか? –

+0

興味深い...はい、確実にPropertyChangedイベントが発生します。 – Flagbug

+1

TabControlでSelectedIndexを既定値に設定している場合は[http://msdn.microsoft.com/en-us/library/ms743230.aspx]。 –

答えて

0

これは、プロパティがtrueに変更された場合、期待通りに機能します。タブが切り替わります。多分problem with the bindingがありますか? (または私は質問を誤解したのですか?)

0

これは古いスレッドですが、誰かが私に答えを探すのと同じようにこれに不快感を与えるかもしれないことを知っています。

解決方法:TabControlスタイルでセッターを追加して、SelectedIndexを初期値に設定するだけです。例えばセッタープロパティ= "SelectedIndex"値= "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> 
関連する問題