29

DataTemplateのToString()メソッドにバインドする簡単な方法はありますか?TextBlockのTextプロパティがTextプロパティにデフォルトでToString()を使用することを期待しますが、それは起こりません。したがって、これを行う簡単な方法は次のとおりです。

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

5 に答える 5

59

使用できますText="{Binding}"ToString()メソッドは暗黙的に呼び出されます。

于 2012-11-29T16:23:57.037 に答える
7

コンバーターを使用できます。このような:

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();
    }
}
于 2012-11-29T15:27:45.227 に答える
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 プロパティは、ウィンドウのコンテキスト内にある必要があります。

于 2012-11-29T16:42:42.617 に答える
1

その特定の ToString() メソッドの文字列プロパティを、バインド先のオブジェクトに追加する方が理にかなっています。

于 2012-11-29T16:12:54.960 に答える
0

WPFはメソッドへの直接のバインドをサポートしていませんが、カスタムIValueConverter、ObjectDataProvider、またはここで説明するその他のアプローチを使用できます。

于 2012-11-29T15:26:07.340 に答える