简单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}}" />