Как в WPF сделать привязку к CheckBox'у?

490
15 февраля 2017, 20:50

Добрый день! Не могу понять как сделать в WPF привязку видимости элемента(Кнопки) к CheckBox'у(видно/не видно), как это можно сделать?

Answer 1

Определим конвертер преобразования из bool в Visibility:

public class BoolToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {  
        return (bool)value ? Visibility.Visible : Visibility.Collapsed;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

дальше в ресурсах объявим созданный конвертер:

<Window.Resources>
    <local:BoolToVisibilityConverter x:Key="boolToVisibilityConverter"/>
</Window.Resources>

затем биндим свойство Visibility нужного нам элемента к свойству IsChecked CheckBox:

<CheckBox Name="checkbox"/>
<Button Content="Button" 
        Visibility="{Binding ElementName=checkbox, Path=IsChecked, Converter={StaticResource boolToVisibilityConverter}}"

UPD (по совету Foggy Finder)

Также можно использовать и стандартные конвертеры( полный список можно посмотреть здесь)

Например:

<Window.Resources>
    <BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter"/>
</Window.Resources>
READ ALSO
Как привязать static ObservableCollection к GridView

Как привязать static ObservableCollection к GridView

Не обновляется UI при изменении коллекции

468
Генерация &lt;option&gt; для datalist ASP.NET

Генерация <option> для datalist ASP.NET

привет! есть код

387
Динамическое создание PictureBox N-го количества

Динамическое создание PictureBox N-го количества

В общем, есть папка с изображениями, при выборе этой папки на форме нужно создать PictureBox и в каждый PictureBox поместить изображение, те - получается...

379
Запрос к Many-To-Many используя Linq

Запрос к Many-To-Many используя Linq

Имею такие таблицы созданые через EF

376