主頁 > 知識庫 > 關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細介紹

關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細介紹

熱門標簽:內(nèi)蒙古智能電銷機器人哪家強 怎樣在地圖標注消火栓圖形 地圖標注位置多的錢 杭州智能電話機器人 百度地圖標注點擊事件 泰州手機外呼系統(tǒng)軟件 山東防封電銷卡辦理套餐 廈門四川外呼系統(tǒng) 濟源人工智能電話機器人價格

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

按鈕XAML

復(fù)制代碼 代碼如下:

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判斷
復(fù)制代碼 代碼如下:

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;

      IListbool> boollist = new Listbool>();

      for (int i = 0; i paramlist.Length; i++)
      {
        switch (paramlist[i].ToLowerInvariant())
        {
          case "checknameexisted":
            boollist.Add(ValidationRuleHelper.ValidateInvalidCheckNameExistedValidationRule>(values[i]));
            break;
          case "directoryandfileexist":
            boollist.Add(ValidationRuleHelper.ValidateInvalidDirectoryAndFileExistValidationRule>(values[i]));
            break;
          case "greaterthanzerointeger":
            boollist.Add(ValidationRuleHelper.ValidateInvalidGreaterThanZeroIntegerValidationRule>(values[i]));
            break;
          case "numericnull":
            boollist.Add(ValidationRuleHelper.ValidateInvalidNumericNullValidationRule>(values[i]));
            break;
          case "stringlength":
            boollist.Add(ValidationRuleHelper.ValidateInvalidStringLengthValidationRule>(values[i]));
            break;
          case "stringnullorempty":
            boollist.Add(ValidationRuleHelper.ValidateInvalidStringNullOrEmptyValidationRule>(values[i]));
            break;
          case "ipaddress":
            boollist.Add(ValidationRuleHelper.ValidateInvalidIPAddressValidationRule>(values[i]));
            break;
          case "objectnull":
          default:
            boollist.Add(ValidationRuleHelper.ValidateInvalidObjectNullValidationRule>(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
  }

您可能感興趣的文章:
  • 解析WPF綁定層次結(jié)構(gòu)數(shù)據(jù)的應(yīng)用詳解
  • WPF的數(shù)據(jù)綁定詳細介紹
  • wpf將表中數(shù)據(jù)顯示到datagrid示例
  • 在WinForm和WPF中使用GMap.Net地圖插件簡單教程
  • 用WPF實現(xiàn)屏幕文字提示的實現(xiàn)方法
  • 解析WPF實現(xiàn)音頻文件循環(huán)順序播放的解決方法
  • 深入分析WPF客戶端讀取高清圖片卡以及縮略圖的解決方法詳解
  • 關(guān)于WPF異步MVVM等待窗體的介紹
  • 在Winform和WPF中注冊全局快捷鍵實現(xiàn)思路及代碼
  • WPF制作一個簡單的倒計時器實例附源碼
  • WPF綁定實例詳解

標簽:喀什 新鄉(xiāng) 臺州 朝陽 朔州 周口 洛陽 百色

巨人網(wǎng)絡(luò)通訊聲明:本文標題《關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細介紹》,本文關(guān)鍵詞  關(guān)于,WPF,使用,MultiConverter,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章