既定のBorderBrushを持つWPF TextBoxがあります。テキストボックスに空のコンテンツがある場合、BorderBrushを赤色で変更したいと思います。ここに私のコードは次のとおりです。TextBoxテキストが変更された後にBorderBrushが更新されない
<TextBox Width="200" Text="{Binding Path=Description}" Name="tbDescription" Grid.Row="1" Grid.Column="2" Margin="2"
BorderBrush="{Binding RelativeSource={RelativeSource Self},
Path=Text,
Converter={StaticResource borderBrushColorConverter}}">
そして、ここでは私のコンバータです:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string text = value as string;
if (string.IsNullOrEmpty(text))
return Brushes.Red;
return Brushes.Transparent;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
問題は国境がTextBoxのフォーカスが失われた場合にのみ、赤くなることです。 BorderBrushの代わりにBackgroundプロパティで同じコードを使用しようとしましたが、すべて正常に動作します。
問題は、デフォルトでは、フォーカスが当てられたときにWPFがテキストボックスの周囲に青い枠線を追加するという問題です。その境界を削除する方法を探してみる必要があります。このリンクを試してください:(http://stackoverflow.com/questions/6404059/remove-default-mouseover-focus-effect-on-textboxes-in-wpf) –
バインディングモードを「PropertyChanged」に変更すると機能しますかデフォルトの 'LostFocus'の? 'Text =" {バインディングパス=説明、Mode = PropertyChanged} " – Rachel
ここでコンバーターを使わないで' DataTrigger'で 'Style'を作ってください。 – dymanoid