Подтвердить что ты не робот

Привязка к методу ToString() в DataTemplate

Есть ли простой способ привязки к методу ToString() в DataTemplate? Я бы предположил, что свойство Text для TextBlock по умолчанию использует ToString() для его свойства Text, но этого не происходит. Так что любой простой способ сделать это:

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

Ответ 1

Вы можете использовать Text="{Binding}". Метод ToString() вызывается неявно.

Ответ 2

вы можете использовать конвертер. например:

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

Ответ 3

К сожалению, вы не можете связать управление с методом, но вы можете обойти это:

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

Было бы разумнее добавить свойство string для этого конкретного метода ToString() к объекту, к которому вы привязываетесь.

Ответ 5

WPF не поддерживает привязку к методам напрямую, но вы можете использовать пользовательский IValueConverter, ObjectDataProvider или любой другой подход, как описано здесь.