문제

데이터 트리거가있는 값 변환기를 사용하는 데 어려움이 있습니다. 내 코드 중 일부에서는 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}}" />
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top