Флажок Bind для обозначения веса шрифта с помощью конвертера значений - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу сделать метку с атрибутом FontWeight зависимой от флажка.
Если флажок установлен, то вес шрифта метки выделен жирным шрифтом, если нет - тогда вес шрифта нормальный.Я решил связать атрибут FontWeight в метке с флажком и добавить конвертер.

Вот экран, который я хочу достичь (текст внизу должен быть выделен жирным шрифтом, когда отмечен жирный шрифт) введите описание изображения здесь


Я создал всю логикуи привязка, но когда я нажимаю на флажок 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 голосов
/ 26 апреля 2018

Вы передаете Name из CheckBox в качестве пути привязки

, вместо этого необходимо указать свойство IsChecked:

   <CheckBox Name="BoldField" Margin="5" FontWeight="Bold">Bold</CheckBox>
   <Label Name="text" Grid.Row="3" Grid.ColumnSpan="3" 
    FontWeight="{Binding ElementName=BoldField, Path=IsChecked, Converter={StaticResource custom}}" />
...