2016-12-12 34 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

感谢。这确实解决了大多数问题。一个问题是,当玩家从后台停止时,按钮内容不会更新。 –

+0

尝试在OneWayToSource模式下绑定TwoWay/OneWay模式和IsChecked属性中的Content属性。 – acidhills

+0

也许在你的情况下,你应该禁用IsChecked绑定,并绑定内容。 – acidhills