我有WPF文本框與默認BorderBrush。當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();
}
問題是,邊框變成紅色,只有當文本框焦點丟失。我試圖在背景屬性上使用相同的代碼,而不是在BorderBrush上,然後一切正常。
問題是,默認情況下,WPF在焦點時在文本框周圍添加藍色邊框。您應該嘗試搜索一種方法來刪除該邊框。試試這個鏈接:(http://stackoverflow.com/questions/6404059/remove-default-mouseover-focus-effect-on-textboxes-in-wpf) –
它是否工作,如果你改變你的綁定模式爲'PropertyChanged'默認的'LostFocus'? 'Text =「{綁定路徑=描述,模式= PropertyChanged}」' – Rachel
不要在這裏使用轉換器,使用'DataTrigger'創建'Style'。 – dymanoid