단추가 있고 BooleanSwitch라는 뷰 모델에 부울 속성이 있습니다. BooleanSwitch에 해당하는 경우 BooleanSwitch는 XAML 스타일 바인딩
거짓 그리고 때
이- 녹색 ON,
- 빨간색 OFF, 내가 원하는 :
나는이 될 버튼의 텍스트와 데 ForeColor를 원하는 값이 변경되면 동적으로 변경됩니다.
물론 코드 숨김으로 처리 할 수 있습니다. 그러나 XAML 솔루션이 있습니까? 나는 다음과 같은 시도 :
<Style x:Key="SwitchButtonStyle" TargetType="Button"> <Style.Triggers> <DataTrigger Binding="{Binding Path=BooleanSwitch}" Value="true"> <Setter Property="Foreground" Value="Red"/> <Setter Property="Content" Value="ON"/> </DataTrigger> <DataTrigger Binding="{Binding Path=BooleanSwitch}" Value="false"> <Setter Property="Foreground" Value="#00AA00" /> <Setter Property="Content" Value="OFF"/> </DataTrigger> </Style.Triggers> </Style> <Button Click="button_Click" Style="{DynamicResource SwitchButtonStyle}" />
을 그리고 클릭 방법은 다음과 같습니다
이private void button_Click(object sender, RoutedEventArgs e) { BooleanSwitch = !BooleanSwitch; }
BooleanSwitch의 코드는 간단 (.NET 4.5) 할 수 없습니다
private bool privateBooleanSwitch; public bool BooleanSwitch { get { return privateBooleanSwitch; } set { if (value == privateBooleanSwitch) return; privateBooleanSwitch= value; OnPropertyChanged(); } }
로드되면 트리거가 활성화되고 버튼은 빨간색으로 표시되지만 버튼을 클릭하면 더 이상 작동하지 않습니다. DataTriggers의 작동 방식을 잘 이해하지 못하고 있습니다.
내가 뭘 잘못하고 있니?
버튼은 단일 용도의 버튼이지만 특정 요소 내부에서 DataTrigger를 사용할 수 없다는 것을 이미 알아 냈습니다. 난 텍스트 & 색상을 포함하는 다른 속성을 만드는 방법에 대해 생각하고 단추 속성에 바인딩하지만 불필요한 코드를 맞춤법으로 보일뿐입니다. 색상 및 텍스트를 정의하는 데 XAML을 사용하고 싶습니다.
코드가 작동합니다. DataContext를 설정 했습니까? OnPropertyChanged가 올바르게 구현되었는지 확신합니까? – LPL
그것은 작동합니까? 허. 나는 DataContext를 올바르게 설정했다고 확신하지만 오늘 오후에 집에 돌아 오면 OnPropertyChanged를 살펴볼 것입니다. – Mirek
OnPropertyChanged에 인수가없는 이유는 무엇입니까? 메소드는 어떤 속성이 변경되었는지 어떻게 알 수 있습니까? 추신 :이 코드는 나를 위해 또한 작동;) –