2016-12-12 8 views
0

CheckedUncheckedは、ユーザーがボタンをクリックしたときだけ発火させる方法はありますか?ユーザーイベントからの発砲イベント

IsCheckedは、Playingプロパティにバインドされています。この値は、ユーザーからではなく背景から変更される場合があります。そのため、CheckedイベントとUncheckedイベントが再び発生し、他のイベントと競合します。

これを修正するコードを書こうとすると、本当に混乱します。ご協力いただきありがとうございます。

<ToggleButton x:Name="TogglePlay" Width="90" 
       Style="{DynamicResource TogglePlay}" 
       IsChecked="{Binding SessionData.Playing}" 
       Checked="TogglePlay_Checked" Unchecked="TogglePlay_OnUnchecked"/> 
<StackPanel.Resources> 
    <Style x:Key="TogglePlay" TargetType="ToggleButton"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding IsChecked , ElementName=TogglePlay}" Value="False"> 
       <Setter Property="Content" Value="Play" /> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding IsChecked , ElementName=TogglePlay}" Value="True"> 
       <Setter Property="Content" Value="Pause" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</StackPanel.Resources> 

答えて

1

あなたが結合様式を使用しようとすることができ、 "OneWayToSource"

+0

感謝。これはほとんどの問題を解決します。 1つの問題は、プレーヤーがバックグラウンドから停止すると、ボタンの内容が更新されないということです。 –

+0

TwoWay/OneWayモードのContentプロパティとOneWayToSourceモードのIsCheckedプロパティのバインドを試みます。 – acidhills

+0

場合によっては、IsCheckedバインディングを無効にしてコンテンツをバインドするだけで済みます。 – acidhills

関連する問題