【发布时间】:2017-07-06 01:45:20
【问题描述】:
在我的项目中,我有多个不同的强制控制。为了让用户知道某个字段是必需的,我使用 DataTrigger 在该字段上设置了一个红色轮廓。
这是一个必须填写的文本框:
<TextBox Text="{Binding RationaleForNoInvestigation, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding RationaleForNoInvestigation,
Converter={StaticResource IsNullOrEmptyStringConverter}}"
Value="True">
<Setter Property="BorderBrush"
Value="Red" />
<Setter Property="BorderThickness"
Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
这是一个必填字段的组合框:
<telerik:RadComboBox SelectedItem="{Binding Path=SelectedRoomType, Mode=TwoWay}">
<telerik:RadComboBox.Style>
<Style TargetType="telerik:RadComboBox">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedRoomType,
Converter={StaticResource IsNullConverter}}"
Value="True">
<Setter Property="BorderBrush"
Value="Red" />
<Setter Property="BorderThickness"
Value="2" />
</DataTrigger>
</Style.Triggers>
</Style>
</telerik:RadComboBox.Style>
</telerik:RadComboBox>
但是,有一天我可能会决定更改必填字段的视觉指示,例如改为蓝色背景。 我不想遍历项目中所有使用该样式并手动更改它的地方。相反,我想设置一个可以在特定控件中引用的全局样式,然后能够在一个地方更改全局样式。
我怎样才能从上面的代码中提取这些行并在全球范围内?以及如何在上面的 TextBox 和 ComboBox 中引用它?
<Setter Property="BorderBrush"
Value="Red" />
<Setter Property="BorderThickness"
Value="1" />
【问题讨论】:
标签: c# xaml styles datatrigger