【发布时间】:2020-05-26 19:11:52
【问题描述】:
我想用 MultiDataTrigger 更改我的 DataPicker 和 ComboBox 的 BorderBrush。我有3个条件。 它适用于 TextBox 和 TextBlock,但相同的代码不适用于我的 DatePicker 和 ComboBox。请问你知道为什么吗?我的代码:
<ComboBox.Style>
<Style TargetType="ComboBox">
<Setter Property="BorderBrush" Value="Transparent" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=ProgramNameComboBox, Path=IsEnabled}" Value="True" />
<Condition Binding="{Binding ElementName=ProgramNameComboBox, Path=SelectedItem}" Value="" />
<Condition Binding="{Binding ElementName=SaveLabel, RelativeSource={RelativeSource Self}, Path=Content}" Value="Save" />
</MultiDataTrigger.Conditions>
<Setter Property="BorderBrush" Value="Red" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
<DatePicker x:Name="StartDateDataPicker" IsEnabled="{Binding IsRowEnabled}" SelectedDate="{Binding StartDate, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" > <!--BorderBrush="{Binding StartDateBorderBrushColor}"-->
<DatePicker.Style>
<Style TargetType="DatePicker">
<Setter Property="BorderBrush" Value="Transparent" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=StartDateDataPicker, Path=IsEnabled}" Value="True" />
<Condition Binding="{Binding ElementName=StartDateDataPicker, Path=SelectedDate}" Value="null" (I also tried : "01/01/0001") />
<Condition Binding="{Binding ElementName=SaveLabel, Path=Content}" Value="Save" />
</MultiDataTrigger.Conditions>
<Setter Property="BorderBrush" Value="Red" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DatePicker.Style>
</DatePicker>
谢谢
【问题讨论】:
-
你为什么要用
ElementName来控制自己? -
在我学习它的网站上,所以推荐..:wpf-tutorial.com/fr/94/les-styles/…