0

我可以在 xaml 中使用 STYLE 编写以下代码吗?

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

1 回答 1

1

我不确定这是否会按原样工作,因为我不在 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();
  }
}

编辑:

刚刚验证了代码,它按预期工作。

于 2011-11-10T09:14:01.493 回答