Решение
Да, это возможно при использовании преобразователя значений, в частности IValueConverter
.Вы можете привязать свойство bool
, скажем BoolProperty
, от вашего viewmodel
до button
, используя такой конвертер.
<Button Content="{Binding BoolProperty, Converter={StaticResource BoolConverter}}" />
Шаг 1: Вам необходимо создать конвертер, который будет принимать значение boolи вернуть любую строку по вашему желанию.
public class BoolConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is bool)
{
return value.ToString();
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Шаг 2: Объявите этот конвертер как ресурс в XAML (вам нужно будет определить local
псевдоним пространства имен, который содержит конвертер в вашем <Window ..>
начальном элементе.
<local:BoolConverter x:Key="BoolConverter" />
Так что теперь, когда событие измененного свойства вызывается для BoolProperty
, этот преобразователь срабатывает, и текст button
изменяется соответствующим образом.
Предложение :
Я не уверен, почему вы думаете, что сохранение дополнительного свойства string
не является чистым способом. Это чистый и намного более простой подход, чем использование конвертера. Все, что я показал, является ненужными накладными расходами для вашего случая, IMOОднако, так как вы спросили о возможности, я подробно изложил это. Выбор за вами! :) 1030 *