Как правило, это можно сделать двумя способами: класс преобразователя или свойство в модели просмотра, которое по сути преобразует значение за вас.
Я предпочитаю использовать имущественный подход, если это разовая конверсия. Если вы хотите использовать его повторно, воспользуйтесь конвертером. Ниже вы найдете пример конвертера:
<ValueConversion(GetType(Boolean), GetType(Visibility))> _
Public Class BoolToVisibilityConverter
Implements IValueConverter
Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
If value IsNot Nothing Then
If value = True Then
Return Visibility.Visible
Else
Return Visibility.Collapsed
End If
Else
Return Visibility.Collapsed
End If
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Throw New NotImplementedException
End Function
End Class
Метод свойства ViewModel просто проверяет значение логического свойства и возвращает видимость на основе этого. Обязательно реализуйте INotifyPropertyChanged и вызовите его для свойств Boolean и Visibility для правильного обновления.