Wpf 不同图像和边框背景的样式触发器

Wpf 不同图像和边框背景的样式触发器,wpf,triggers,styles,Wpf,Triggers,Styles,我想使用不同的边框背景和不同的图像(每个图像必须使用不同的背景色) 如何更改使用StyleTrigger来执行此操作?(现在它只显示所有图像的红色边框) 谢谢。假设您的绑定正确,您只需在边框中添加类似的样式,即可更新背景属性,并从边框本身删除背景值: <DataTemplate> <Border BorderThickness="1" Width="18" Height="18" CornerRadius="2" BorderBrush="Red">

我想使用不同的边框背景和不同的图像(每个图像必须使用不同的背景色) 如何更改使用StyleTrigger来执行此操作?(现在它只显示所有图像的红色边框)



谢谢。

假设您的
绑定
正确,您只需在
边框
中添加类似的
样式
,即可更新
背景
属性,并从
边框
本身删除
背景
值:

<DataTemplate>
    <Border BorderThickness="1" Width="18" Height="18" CornerRadius="2" BorderBrush="Red">
        <Border.Style>
            <Style TargetType="{x:Type Border}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="High">
                        <Setter Property="Background" Value="Green" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="Medium">
                        <Setter Property="Background" Value="Blue" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="Low">
                        <Setter Property="Background" Value="Red" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
        <Image Width="16" Height="16">
            <Image.Style>
                <Style TargetType="{x:Type Image}">
                    <Setter Property="Source" Value="{x:Null}" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="High">
                            <Setter Property="Source" Value="/project;component/Images/High.png" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="Medium">
                            <Setter Property="Source" Value="/project;component/Images/Medium.png" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="Low">
                            <Setter Property="Source" Value="/project;component/Images/Low.png" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Image.Style>
        </Image>
    </Border>
</DataTemplate>


试试这个。

您已经为图像上的边框指定了BorderBrush红色。。。这就是为什么每个图像都会出现红色边框的原因。。触发器只会更新映像的源。。不是它的border@nit我想知道我必须如何对边框和图像使用触发器?就像你给图像的样式一样。。类似地,您必须将样式触发器应用于边框以更改其边框笔刷和Background@nit你是说我需要两个扳机?我需要合并这些。谢里丹,图像没有背景属性。这就是问题所在。哦,对不起,我没有注意到。。。我们可以设置
边框的
背景
。。。我会更新我的答案。
<DataTemplate>
    <Border BorderThickness="1" Width="18" Height="18" CornerRadius="2" BorderBrush="Red">
        <Border.Style>
            <Style TargetType="{x:Type Border}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="High">
                        <Setter Property="Background" Value="Green" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="Medium">
                        <Setter Property="Background" Value="Blue" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="Low">
                        <Setter Property="Background" Value="Red" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
        <Image Width="16" Height="16">
            <Image.Style>
                <Style TargetType="{x:Type Image}">
                    <Setter Property="Source" Value="{x:Null}" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="High">
                            <Setter Property="Source" Value="/project;component/Images/High.png" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="Medium">
                            <Setter Property="Source" Value="/project;component/Images/Medium.png" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding RowData.DataContext.my}" Value="Low">
                            <Setter Property="Source" Value="/project;component/Images/Low.png" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Image.Style>
        </Image>
    </Border>
</DataTemplate>