Ответ 1
Вы можете использовать Text="{Binding}"
. Метод ToString()
вызывается неявно.
Есть ли простой способ привязки к методу ToString() в DataTemplate? Я бы предположил, что свойство Text для TextBlock по умолчанию использует ToString() для его свойства Text, но этого не происходит. Так что любой простой способ сделать это:
<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 должно быть в контексте окна.
Было бы разумнее добавить свойство string для этого конкретного метода ToString() к объекту, к которому вы привязываетесь.
WPF не поддерживает привязку к методам напрямую, но вы можете использовать пользовательский IValueConverter, ObjectDataProvider или любой другой подход, как описано здесь.