Ладно, во-первых, у меня нет опыта работы с 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
, но это не сработало, и возиться с полями границ, отступами и толщиной также не оказало никакого влияния.
Может ли кто-нибудь просветить меня, как этого добиться?