У меня есть пользовательский конвертер, который имеет свойство DefaultText.Все, что делает мой конвертер - возвращает DefaultText, если строка пуста или пуста.Я не могу заставить его работать, хотя.Вот что у меня есть.Это класс конвертера.
public class DisplayValueConverter : DependencyObject, IValueConverter
{
public static readonly DependencyProperty DefaultTextProperty = DependencyProperty.Register( "DefaultText",
typeof ( string ),
typeof ( DisplayValueConverter ) );
public string DefaultText
{
get { return ( string ) GetValue( DefaultTextProperty ); }
set { SetValue( DefaultTextProperty, value ); }
}
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
string empty = ( parameter != null ) ? parameter as string : DefaultText;
return ( value != null && !string.IsNullOrEmpty( value.ToString().Trim() ) ) ? value.ToString() : empty;
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
return null;
}
}
И это мой xaml, использующий его.
<TextBox Grid.Column="1"
Grid.Row="3"
VerticalAlignment="Center"
Margin="0,0,10,0" >
<TextBox.Text>
<Binding Path="DataSource.Payee"
Mode="TwoWay"
NotifyOnSourceUpdated="True"
NotifyOnTargetUpdated="True"
NotifyOnValidationError="True"
ValidatesOnDataErrors="True"
UpdateSourceTrigger="PropertyChanged">
<Binding.Converter>
<k:DisplayValueConverter DefaultText="{Binding ElementName=This, Path=Test, Mode=TwoWay}" />
</Binding.Converter>
<Binding.ValidationRules>
<vr:RequiredField Label="Payee" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Я проверил, что у DataContext есть объект и что Path работает,Поэтому я не уверен, что делаю не так.