기본 BorderBrush가있는 WPF TextBox가 있습니다. 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 대신 Background 속성에서 같은 코드를 사용하려고했는데 모든 것이 잘 동작합니다.
기본적으로 WPF는 포커스가있을 때 텍스트 상자 주위에 파란색 테두리를 추가합니다. 경계를 제거하는 방법을 찾아보십시오. 이 링크를보십시오 : (http://stackoverflow.com/questions/6404059/remove-default-mouseover-focus-effect-on-textboxes-in-wpf) –
바인딩 모드를 대신 'PropertyChanged'로 변경하면 작동합니까? 기본 'LostFocus'? 'Text = "{Binding Path = Description, Mode = PropertyChanged}" – Rachel
여기서 변환기를 사용하지 말고'DataTrigger'로'Style'을 만드십시오. – dymanoid