Свойство TextWrapping элемента TextBox имеет три возможных значения:
- Wrap
- Nowrap
- WrapWithOverflow
Я хотел бы привязать свойство IsChecked элемента MenuItem. Если проверен MenuItem, я хочу установить для свойства TextWrapping элемента TextBox значение Wrap. Если MenuItem не отмечен, я хочу установить для свойства TextWrapping элемента TextBox значение NoWrap.
Подводя итог, я пытаюсь привязать элемент управления, имеющий два состояния, к двум значениям перечисления, которое имеет более двух значений.
[править] Я хотел бы выполнить это в XAML, если это возможно.
[править] Я понял, как это сделать, используя IValueConverter. Возможно, есть лучший способ сделать это? Вот что я сделал:
В Window.Resources я объявил ссылку на мой ValueConverter.
<local:Boolean2TextWrapping x:Key="Boolean2TextWrapping" />
В моем TextBox я создал привязку к MenuItem и включил конвертер в оператор привязки.
TextWrapping="{Binding ElementName=MenuItemWordWrap, Path=IsChecked, Converter={StaticResource Boolean2TextWrapping}}"
и ValueConverter выглядит так:
public class Boolean2TextWrapping : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo cultureInfo)
{
if (((bool)value) == false)
{
return TextWrapping.NoWrap;
}
return TextWrapping.Wrap;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}