2016-12-12 2 views
0

사용자가 버튼을 클릭 할 때 CheckedUnchecked 만 발동되는 방법이 있습니까?사용자 요청에 의한 이벤트 만 해당

IsCheckedPlaying 속성에 바인딩됩니다. 이 값은 사용자가 아닌 백그라운드에서 변경 될 수 있습니다. 따라서 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 모드의 Content 속성과 IsChecked 속성을 바인딩하십시오. – acidhills

+0

아마도 상황에 따라 IsChecked 바인딩을 사용 중지하고 콘텐츠를 바인딩하기 만하면됩니다. – acidhills

관련 문제