web-dev-qa-db-ja.com

DataTemplateのToString()メソッドへのバインド

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

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

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

48
amnezjak

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

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

残念ながら、コントロールをメソッドにバインドすることはできませんが、その外観を回避することはできます。

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

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

XAMLの場合:

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

myTextプロパティはウィンドウのコンテキスト内にある必要があることに注意してください。

4
Heysem Katibi

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

1
Geerten

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

0
Jarek Kardas