【发布时间】:2010-09-20 00:48:12
【问题描述】:
TextBox 的 TextWrapping 属性具有三个可能的值:
- 换行
- 无包装
- WrapWithOverflow
我想绑定到 MenuItem 的 IsChecked 属性。如果选中了 MenuItem,我想将 TextBox 的 TextWrapping 属性设置为 Wrap。如果没有选中 MenuItem,我想将 TextBox 的 TextWrapping 属性设置为 NoWrap。
总而言之,我正在尝试将具有两个状态的控件绑定到具有两个以上值的枚举的两个值。
[edit]如果可能,我想在 XAML 中完成此操作。
[编辑] 我想出了如何使用 IValueConverter 来做到这一点。也许有更好的方法来做到这一点?这是我所做的:
在 Window.Resources 中,我声明了对我的 ValueConverter 的引用。
<local:Boolean2TextWrapping x:Key="Boolean2TextWrapping" />
在我的 TextBox 中,我创建了与 MenuItem 的绑定,并将 Converter 包含在绑定语句中。
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();
}
}
【问题讨论】:
-
我正在尝试在 SL 4 中做同样的事情,但我的转换器从未被调用。 xaml 与您的相同...
标签: wpf binding enums checkbox word-wrap