绑定复选框以使用值转换器标记fontweight

时间:2018-04-25 20:27:57

标签: c# wpf data-binding valueconverter

我想制作具有依赖于复选框的FontWeight属性的标签 如果选中复选框,则标签字体粗细为粗体,否则 - 字体粗细是正常的。我决定将Label中的FontWeight属性与Checkbox绑定并添加转换器。

这是我想要实现的屏幕(当选中Bold时,底部的文本应该加粗) enter image description here


我创建了所有的逻辑和绑定,但当我点击Bold复选框时,没有任何事情发生。

这是我到目前为止所具备的内容 MainWindow.xaml

<Window ...
 ...
<Window.Resources>
    <local:BoolToStringConverter x:Key="custom" TrueValue="Bold" FalseValue="Normal" />
</Window.Resources>
<Grid>
...
   <CheckBox Name="BoldField" Margin="5" FontWeight="Bold">Bold</CheckBox>
   <Label Name="text" Grid.Row="3" Grid.ColumnSpan="3" 
    FontWeight="{Binding BoldField, Converter={StaticResource custom}}" />
...
</Window>

MainWindow.xaml.cs

namespace Wpf03
{
    public class BoolToValueConverter<T> : IValueConverter
    {
        public T FalseValue { get; set; }
        public T TrueValue { get; set; }

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
                return FalseValue;
            else
                return (bool)value ? TrueValue : FalseValue;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return value != null ? value.Equals(TrueValue) : false;
        }
    }

    public class BoolToStringConverter : BoolToValueConverter<FontWeight> { }


    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

我试过不同的转换器,但没有结果。为什么我的转换器从未被调用?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您正在传递Name的{​​{1}}作为绑定路径

而是需要指定CheckBox属性:

IsChecked