TextBox 的 TextWrapping 属性具有三个可能的值:
我想绑定(bind)到 MenuItem 的 IsChecked 属性。如果选中了 MenuItem,我想将 TextBox 的 TextWrapping 属性设置为 Wrap。如果未选中 MenuItem,我想将 TextBox 的 TextWrapping 属性设置为 NoWrap。
总而言之,我试图将具有两个状态的控件绑定(bind)到具有两个以上值的枚举的两个值。
[编辑] 如果可能,我想在 XAML 中完成此操作。
[编辑] 我想出了如何使用 IValueConverter 来做到这一点。也许有更好的方法来做到这一点?这是我所做的:
在 Window.Resources 中,我声明了对我的 ValueConverter 的引用。
<local:Boolean2TextWrapping x:Key="Boolean2TextWrapping" />
在我的 TextBox 中,我创建了与 MenuItem 的绑定(bind),并将 Converter 包含在绑定(bind)语句中。
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();
}
}
最佳答案
如果你想在 xaml 中完成这一切,你需要使用 Style和 DataTrigger .
<StackPanel>
<CheckBox x:Name="WordWrap">Word Wrap</CheckBox>
<TextBlock Width="50">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin lacinia nibh non augue. Pellentesque pretium neque et neque auctor adipiscing.
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=WordWrap}" Value="True">
<Setter Property="TextWrapping" Value="Wrap" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
关于wpf - 如何将 TextBox 的 TextWrapping 属性绑定(bind)到 MenuItem 的 IsChecked 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/250840/