我有一个具有DefaultText属性的自定义转换器。如果字符串为空或空,我所有的转换器都会返回DefaultText。我似乎无法让它工作。这是我得到的。这是转换器类。对于转换器不工作的WPF绑定
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有一个对象,并且该路径起作用。所以我不确定我做错了什么。
究竟发生了什么? – rossisdead 2010-09-23 17:01:57
@rossisdead - 没什么。我期待数据绑定引擎首先绑定转换器属性DefaultText,然后尝试绑定路径DataSource.Payee上的文本属性,但没有任何反应。 – Matt 2010-09-23 17:13:29
您是否有DefaultText绑定中指定的名为“This”的元素? – 2010-09-23 17:24:00