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