2012-05-09 2 views
0

У меня есть две кнопки привязки в моем приложенииWPF кнопку

Теперь я хочу, чтобы связать btnOff с! Ison. Значение является btnOn активизирован, btnOff должен быть отключен, и наоборот

EDIT: Ниже моя реализация:

<Button x:Name="btnOn" Content="On" Width="45" Height="24" IsEnabled="{Binding isOn, Converter={StaticResource BoolInverter}}" /> 
    <Button x:Name="btnOff" Content="Off" Width="45" Height="24" IsEnabled="{Binding isOn} /> 

public class BoolInverterConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      if (value is bool) 
      { 
       return !(bool)value; 
      } 
      return value; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      if (value is bool) 
      { 
       return !(bool)value; 
      } 
      return value; 
     } 

    } 
+0

Что у вас есть? –

+0

Я реализовал Конвертер для инвертирования логического значения, и теперь он отлично работает. – xaria

ответ

0

Не было бы проще иметь другое вычисленное/производное свойство IsOff (без поля поддержки), которое отрицает свойство IsOn?

public bool IsOn{ 
    get{...} 
    set 
    { _isOn = value; 
     NotifyPropertyChanged("IsOn"); 
     NotifyPropertyChanged("IsOff"); 
    } 
} 

public bool IsOff 
{ 
    get{ return !IsOn;} 
} 

Преобразователи обычно используются для преобразования типов данных, например. связать свойство enum visibility с логическим свойством backing в viewmodel.