源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

关于WPF使用MultiConverter控制Button状态的详细介绍

  • 时间:2021-10-12 07:27 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:关于WPF使用MultiConverter控制Button状态的详细介绍
[b]需求描述 [/b]1.按钮的状态需要根据多个数据源的内容作出不同的组合判断 2.每个数据源的判断规则可定制 注:以下功能感觉只是简单粗暴的实现,如果您了解更优雅的解决方案,烦请告诉我下,感谢先! [b]按钮XAML [/b]
[u]复制代码[/u] 代码如下:
<Button Name="btnOK"                  Grid.Column="2"                  HorizontalAlignment="Left"                  VerticalAlignment="Center"                  Command="{Binding Path=OKCommand}"                  Content="{DynamicResource Common_Button_OK}"                  IsDefault="True"                  Style="{DynamicResource ButtonStyle}">            <Button.IsEnabled>              <MultiBinding Converter="{StaticResource InvalidMultiValidationRuleToBooleanMultiConverter}"                ConverterParameter="objectnull|greaterthanzerointeger|greaterthanzerointeger|greaterthanzerointeger">                <Binding ElementName="comboBoxFilter"                         Mode="OneWay"                         Path="SelectedItem" />                <Binding ElementName="textBoxFrameRate"                         Mode="OneWay"                         Path="Text" />                <Binding ElementName="textBoxSizeWidth"                         Mode="OneWay"                         Path="Text" />                <Binding ElementName="textBoxSizeHeight"                         Mode="OneWay"                         Path="Text" />              </MultiBinding>            </Button.IsEnabled>          </Button>
MultiConverter判断
[u]复制代码[/u] 代码如下:
public class InvalidMultiValidationRuleToBooleanMultiConverter : IMultiValueConverter   {     #region IMultiValueConverter Members     public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)     {       string[] paramlist = ((string)parameter).Split('|');       if (paramlist == null || paramlist.Length <= 0)       {         throw new ArgumentNullException("parameter");       }       int length = paramlist.Length;       IList<bool> boollist = new List<bool>();       for (int i = 0; i < paramlist.Length; i++)       {         switch (paramlist[i].ToLowerInvariant())         {           case "checknameexisted":             boollist.Add(ValidationRuleHelper.Validate<InvalidCheckNameExistedValidationRule>(values[i]));             break;           case "directoryandfileexist":             boollist.Add(ValidationRuleHelper.Validate<InvalidDirectoryAndFileExistValidationRule>(values[i]));             break;           case "greaterthanzerointeger":             boollist.Add(ValidationRuleHelper.Validate<InvalidGreaterThanZeroIntegerValidationRule>(values[i]));             break;           case "numericnull":             boollist.Add(ValidationRuleHelper.Validate<InvalidNumericNullValidationRule>(values[i]));             break;           case "stringlength":             boollist.Add(ValidationRuleHelper.Validate<InvalidStringLengthValidationRule>(values[i]));             break;           case "stringnullorempty":             boollist.Add(ValidationRuleHelper.Validate<InvalidStringNullOrEmptyValidationRule>(values[i]));             break;           case "ipaddress":             boollist.Add(ValidationRuleHelper.Validate<InvalidIPAddressValidationRule>(values[i]));             break;           case "objectnull":           default:             boollist.Add(ValidationRuleHelper.Validate<InvalidObjectNullValidationRule>(values[i]));             break;         }       }       bool result = boollist[0];       for (int i = 1; i < boollist.Count; i++)       {         result = result & boollist[i];       }       return result;     }     public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)     {       return null;     }     #endregion   }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部