Архив метки: WPF

WPF: Конвертер для Boolean

Если в окошке программы есть какой-то элемент, например, ListView, то его можно при необходимости скрыть просто установив значение Visibility равным Collapsed. Если же мы делаем привязку к переменной типа Boolean, то там есть только два значения: true или false, при этом у Visibility три варианта: Visible, Hidden и Collapsed. То есть нельзя использовать такой код:

<ScrollViewer
  Visibility="{Binding Source={x:Static Application.Current},Path=DescriptionPane}">
</ScrollViewer>

где DescriptionPane — это true или false, в зависимости от того, нужно показывать панельку или нет.
Если оставить всё так, то получим ошибку:

Error XDG0010 ‘Microsoft.VisualStudio.XSurface.Wpf.Application.Current’ StaticExtension value cannot be resolved to an enumeration, static field, or static property.

 

Раньше нужно было писать отдельный конвертер, но сейчас достаточно использовать встроенный:

MainWindow.xaml
<ScrollViewer
  Visibility="{Binding Source={x:Static Application.Current},Path=DescriptionPane, Converter={StaticResource VisibleIfTrueConverter}}"
</ScrollViewer>

Но для этого необходимо сначала его объявить в ресурсах:

MainWindow.xaml
<Window x:Class="Sample.MainWindow"
...
<Window.Resources>
  <BooleanToVisibilityConverter x:Key="VisibleIfTrueConverter" />
</Window.Resources>