是否有任何简单的方法可以绑定到 DataTemplate 中的 ToString() 方法?我希望 TextBlock 的 Text 属性默认使用 ToString() 作为其 Text 属性,但这不会发生。所以任何简单的方法来做到这一点:
<DataTemplate x:Key="myTemplate">
<TextBlock Text="{Binding ToString()}"/>
<DataTemplate>
是否有任何简单的方法可以绑定到 DataTemplate 中的 ToString() 方法?我希望 TextBlock 的 Text 属性默认使用 ToString() 作为其 Text 属性,但这不会发生。所以任何简单的方法来做到这一点:
<DataTemplate x:Key="myTemplate">
<TextBlock Text="{Binding ToString()}"/>
<DataTemplate>
您可以使用Text="{Binding}"
. 该ToString()
方法被隐式调用。
您可以使用转换器。像这样:
public class PropertyValueStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
不幸的是,您不能将控件绑定到方法,但您可以绕过这样做:
public string GetText()
{
return "I am happy";
}
public string MyText
{
get { return GetText(); }
}
现在在 XAML 中:
<DataTemplate x:Key="myTemplate">
<TextBlock Text="{Binding MyText}"/>
<DataTemplate>
注意 MyText 属性必须在窗口的上下文中。
将特定 ToString() 方法的字符串属性添加到要绑定的对象会更有意义。
WPF 不支持直接绑定到方法,但您可以使用自定义 IValueConverter、ObjectDataProvider 或此处描述的任何其他方法。