TextBox の TextWrapping プロパティには、次の 3 つの値があります。
- 包む
- ラップなし
- WrapWithOverflow
MenuItem の IsChecked プロパティにバインドしたいと思います。MenuItem がチェックされている場合、TextBox の TextWrapping プロパティを Wrap に設定したいと考えています。MenuItem がチェックされていない場合、TextBox の TextWrapping プロパティを NoWrap に設定したいと考えています。
要約すると、2 つ以上の値を持つ列挙型の 2 つの値に 2 つの状態を持つコントロールをバインドしようとしています。
[編集]可能であれば、これを 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();
}
}