我有一個具有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