Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单WPF IValueConverter和DataTrigger不能一起工作_Wpf_Datatrigger_Ivalueconverter - Fatal编程技术网

简单WPF IValueConverter和DataTrigger不能一起工作

简单WPF IValueConverter和DataTrigger不能一起工作,wpf,datatrigger,ivalueconverter,Wpf,Datatrigger,Ivalueconverter,我在使用带有数据触发器的值转换器时遇到了问题。在我的一些代码中,DataTrigger的Path似乎应用于根元素,而不是样式应用于的元素 我创建了一个简单的测试用例,但我不理解它的行为。我希望按钮变为红色或蓝色,这取决于哪个值被馈送到数据触发器的转换器,但是按钮根本没有受到影响 <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://sche

我在使用带有数据触发器的值转换器时遇到了问题。在我的一些代码中,
DataTrigger
Path
似乎应用于根元素,而不是样式应用于的元素

我创建了一个简单的测试用例,但我不理解它的行为。我希望
按钮
变为红色或蓝色,这取决于哪个值被馈送到
数据触发器
的转换器,但是
按钮
根本没有受到影响

<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>

为什么不调用
Convert
?为什么
按钮不变成红色或蓝色?

在另一个StackOverflow问题中找到了答案:

答案是将
RelativeSource={relativesourceself}
添加到绑定中:

<DataTrigger Binding="{Binding Path=ToolTip,
                       RelativeSource={RelativeSource Self},
                       Converter={StaticResource SimpleConverter}}" />

<DataTrigger Binding="{Binding Path=ToolTip,
                       RelativeSource={RelativeSource Self},
                       Converter={StaticResource SimpleConverter}}" />