Standardowym sposobem wykonania tej czynności jest utworzenie wartości IValueConverter
, która odwróci wartości boolowskie. Podczas tworzenia tej klasy jest trudniejsze niż dodanie nowej właściwości, to jest całkowicie wielokrotnego użytku - więc później, można ponownie użyć tego w innych powiązaniach (bez zanieczyszczania ViewModel z dużą ilością! Właściwości nieruchomości).
Ta klasa będzie wyglądać następująco:
[ValueConversion(typeof(bool), typeof(bool))]
public class InvertBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool booleanValue = (bool)value;
return !booleanValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
bool booleanValue = (bool)value;
return !booleanValue;
}
}
Następnie należy dodać go do swoich zasobów:
<src:InvertBoolConverter x:Key="invertBoolConverter"/>
Gdy masz to, by go używać jak:
<Button Content="Stop loading"
IsEnabled="{Binding IsLoaded, Converter={StaticResource invertBoolConverter}}"
/>
Zobacz [to pytanie SO] (http://stackoverflow.com/questions/1039636/how-to-bind-inverse-boolean-properties-in-wpf) – Nekresh