激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 關于WPF使用MultiConverter控制Button狀態的詳細介紹

關于WPF使用MultiConverter控制Button狀態的詳細介紹

2019-11-03 19:13asp.net教程網 ASP.NET教程

本篇文章小編將為大家介紹,關于WPF使用MultiConverter控制Button狀態的詳細介紹。需要的朋友參考下

需求描述
1.按鈕的狀態需要根據多個數據源的內容作出不同的組合判斷
2.每個數據源的判斷規則可定制
注:以下功能感覺只是簡單粗暴的實現,如果您了解更優雅的解決方案,煩請告訴我下,感謝先!

按鈕XAML

復制代碼代碼如下:

<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判斷

復制代碼代碼如下:


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
  }

 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久亚洲线观看视频 | 成人视屏网站 | 免费国产网站 | 红桃一区| freexxx69性欧美hd | 久久久经典视频 | 国产伦久视频免费观看视频 | 免费在线一级毛片 | 亚洲码无人客一区二区三区 | 国产午夜精品视频免费不卡69堂 | 久久精品2019中文字幕 | 国产精品久久久不卡 | 免费观看黄色一级视频 | 黄网站在线免费 | 欧美a级一区二区 | 一道本不卡一区 | 欧美成人精品欧美一级乱黄 | 黄色网址免费入口 | 日韩黄色免费观看 | 一色屋任你操 | 成人区一区二区三区 | 欧美日韩国产精品 | 国产精品美女久久久免费 | 草久在线 | 精品国产高清一区二区三区 | 久久精品国产一区二区 | www.av520| 日韩精品中文字幕在线观看 | 一区二区三区在线播放视频 | 4p一女两男做爰在线观看 | 成年人视频在线免费播放 | 欧美一级淫片免费视频1 | 国产精品亚洲综合一区二区三区 | 精品久久一区二区 | 99精品视频在线观看免费 | 欧美精品一区二区性色 | 国产一级二级在线播放 | 欧美日本91精品久久久久 | 在线成人免费观看 | 99精品国产一区二区三区 | 91九色国产视频 |