DataTemplateのToString()メソッドにバインドする簡単な方法はありますか? TextBlockのTextプロパティがTextプロパティにデフォルトでToString()を使用することを期待しますが、それは起こりません。したがって、これを行う簡単な方法は次のとおりです。
<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、または説明されているその他のアプローチを使用できます ここ 。