간단한 WPF IvalueConverter 및 DataTrigger는 함께 작동하지 않습니다
-
10-07-2019 - |
문제
데이터 트리거가있는 값 변환기를 사용하는 데 어려움이 있습니다. 내 코드 중 일부에서는 DataTrigger
'에스 Path
스타일이 적용되는 요소보다는 루트 요소에 적용됩니다.
간단한 테스트 케이스를 만들었고 그 행동을 이해하지 못합니다. 나는 기대하고있다 Button
어떤 값이 DataTrigger
의 변환기이지만 Button
전혀 영향을받지 않습니다!
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SimpleWpfApplication"
x:Class="SimpleWpfApplication.SimpleUserControl"
ToolTip="UserControl ToolTip">
<UserControl.Resources>
<local:SimpleConverter x:Key="SimpleConverter" />
</UserControl.Resources>
<Button ToolTip="Button ToolTip">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger
Binding="{Binding Path=ToolTip, Converter={StaticResource SimpleConverter}}"
Value="Button ToolTip">
<Setter Property="Background" Value="Red" />
</DataTrigger>
<DataTrigger
Binding="{Binding Path=ToolTip, Converter={StaticResource SimpleConverter}}"
Value="UserControl ToolTip">
<Setter Property="Background" Value="Blue" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</UserControl>
간단한 변환기 :
class SimpleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new InvalidOperationException("SimpleConverter is a OneWay converter.");
}
}
왜 그렇지 않습니다 Convert
부름? 왜 그렇지 않습니다 Button
빨간색 또는 파란색으로 돌리시겠습니까?
해결책
다른 stackoverflow 질문에서 답을 찾았습니다. 내 datatrigger 바인딩에 무슨 문제가 있습니까?
답은 추가하는 것입니다 RelativeSource={RelativeSource Self}
바인딩에 :
<DataTrigger Binding="{Binding Path=ToolTip,
RelativeSource={RelativeSource Self},
Converter={StaticResource SimpleConverter}}" />
제휴하지 않습니다 StackOverflow