0
我有這個TextBox
:MultiTrigger不工作時Validation.HasError和IsMouseOver在WPF
<TextBox IsEnabled="{Binding IsChecked, ElementName=Cb_AllowDeletingPictures}"
Style="{DynamicResource TextBoxInError}">
<TextBox.Text>
<Binding Path="TimeBeforeDeletingPicture" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<helpers:TimeBeforeDeletingRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
的風格包含了Validation.ErrorTemplate
財產和使用模板來MultiTrigger
,設置一個工具提示和轉動BorderBrush
和Foreground
紅色,這是它的樣子:
<Style x:Key="TextBoxInError" TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel>
<TextBlock Foreground="Red" FontSize="20" FontWeight="Bold" Text="!" FontFamily="Segoe UI Light"></TextBlock>
<AdornedElementPlaceholder/>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Validation.HasError" Value="True"></Condition>
<Condition Property="IsMouseOver" Value="True"></Condition>
</MultiTrigger.Conditions>
<Setter Property="Foreground" Value="Red" />
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="ToolTip"
Value="{Binding (Validation.Errors)[0].ErrorContent, RelativeSource={x:Static RelativeSource.Self}}"/>
</MultiTrigger>
</Style.Triggers>
</Style>
現在,你可以在下面的截圖看到,ErrorTemplate工作得很好呈現出紅色驚歎號標記文本框之前,問題是:
- 當鼠標
is not over
文本框,無論是前景還是在BorderBrush是紅色的,這就是好的。 - 現在鼠標
is over
TextBox的區域中,只有前景變爲紅色,而BorderBrush在鼠標懸停時保持其原始行爲。
當鼠標是不是在文本框區域:
當鼠標在文本框區域:
爲什麼有這樣的行爲,爲什麼它在前臺而不是爲了工作BorderBrush?我錯過了什麼嗎?
Thx @Rohit我想我找到了什麼是我的問題 – AymenDaoudi 2014-08-30 17:08:34