проблема с использованием стиля в WPF - PullRequest
0 голосов
/ 10 ноября 2011

Могу ли я написать следующий код, используя STYLE в xaml?

cmbEnquiry.IsEnabled = (txtQuotationNo.IsEnabled && txtQuotationNo.IsReadOnly == false);

1 Ответ

1 голос
/ 10 ноября 2011

Я не уверен, что это будет работать как есть, так как я не нахожусь перед IDE и пытаюсь кодировать из памяти, но если ничего другого, это послужит примером для MultiBinding.

В ваших ресурсах:

<local:AndNotConverter x:Key="AndNotConverter" />
<Style ...>
    <Setter Property="IsEnabled">
        <Setter.Value>
            <MultiBinding Converter="{StaticResource AndNotConverter}">
                <Binding ElementName="txtQuotationNo" Path="IsEnabled" />
                <Binding ElementName="txtQuotationNo" Path="IsReadOnly" />
            </MultiBinding>
        </Setter.Value>
    </Setter>
</Style

В вашем коде:

public class AndNotConverter : IMultiValueConverter
{
  public object Convert(object[] values, Type targetType, object parameter, 
      System.Globalization.CultureInfo culture)
  {
      return (bool)values[0] && !((bool)values[1]);
  }

  public object[] ConvertBack(object value, Type[] targetTypes, object parameter, 
      System.Globalization.CultureInfo culture)
  {
      throw new NotImplementedException();
  }
}

Редактировать:

Только что подтвержденокод, и он работает как ожидалось.

...