使用WPF / XAML中的触发器绑定控件的背景颜色

时间:2011-09-22 08:48:02

标签: wpf xaml

好的,首先我没有任何WPF的经验,所以如果我的术语有点任性,请向我承担并道歉......;)

以下代码段是我继承的WPF应用程序的一部分。触发器控制特定表单上的必填字段是否突出显示。代码有效,但突出显示似乎适用于控件包含它的边框(??)。

<ItemsControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:cal="clr-namespace:Caliburn.PresentationFramework.ApplicationModel;assembly=Caliburn.PresentationFramework"
              x:Class="company.product.Jobs.JobParametersEditor"
              IsTabStop="False">

    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <DockPanel MinHeight="30">
                <TextBlock Text="{Binding DisplayName, Mode=OneWay}"
                           DockPanel.Dock="Left"
                           VerticalAlignment="Center"
                           MinWidth="120"
                           Margin="6,0" />
                <Border>
                    <Border.Style>
                        <Style TargetType="{x:Type Border}">
                            <Setter Property="Background"
                                    Value="{x:Null}" />
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsValid}"
                                             Value="False">
                                    <Setter Property="Background"
                                        Value="Red" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Border.Style>

                    <ContentControl cal:View.Model="{Binding ValueEditor}"
                                    ToolTip="{Binding ToolTip}"
                                    IsTabStop="False"
                                    MinHeight="19"
                                    VerticalAlignment="Center"
                                    HorizontalAlignment="Stretch" />
                </Border>
            </DockPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

结果有点笨重,所以我想将高亮限制只限于控件,但我无法弄清楚如何做到这一点。我已经尝试移动触发器,使其适用于ContentControl而不是Border,但是不起作用并且摆弄边框边距,填充和厚度也没有任何影响。

有人可以告诉我如何做到这一点吗?

0 个答案:

没有答案