绑定到DataTemplate中的ToString()方法

时间:2012-11-29 15:23:28

标签: c# wpf xaml datatemplate

有没有简单的方法绑定到DataTemplate中的ToString()方法?我希望TextBlock的Text属性默认使用ToString()作为Text属性,但这不会发生。所以任何简单的方法都可以做到这一点:

<DataTemplate x:Key="myTemplate">
    <TextBlock Text="{Binding ToString()}"/>
<DataTemplate>

5 个答案:

答案 0 :(得分:47)

您可以使用Text="{Binding}"。隐式调用ToString()方法。

答案 1 :(得分:6)

你可以使用转换器。像这样:

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();
    }
}

答案 2 :(得分:4)

不幸的是,你不能将控制绑定到方法,但你可以绕过这样做:

public string GetText()
{
    return "I am happy";
}

public string MyText
{
    get { return GetText(); }
}

现在在XAML:

<DataTemplate x:Key="myTemplate">
    <TextBlock Text="{Binding MyText}"/>
<DataTemplate>

注意MyText属性必须位于窗口的上下文中。

答案 3 :(得分:1)

将特定ToString()方法的字符串属性添加到要绑定的对象更有意义。

答案 4 :(得分:0)

WPF不支持直接绑定到方法,但您可以使用自定义IValueConverter,ObjectDataProvider或任何其他方法here