濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細(xì)介紹

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

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

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

按鈕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ù)綁定詳細(xì)介紹
  • wpf將表中數(shù)據(jù)顯示到datagrid示例
  • 在WinForm和WPF中使用GMap.Net地圖插件簡(jiǎn)單教程
  • 用WPF實(shí)現(xiàn)屏幕文字提示的實(shí)現(xiàn)方法
  • 解析WPF實(shí)現(xiàn)音頻文件循環(huán)順序播放的解決方法
  • 深入分析WPF客戶(hù)端讀取高清圖片卡以及縮略圖的解決方法詳解
  • 關(guān)于WPF異步MVVM等待窗體的介紹
  • 在Winform和WPF中注冊(cè)全局快捷鍵實(shí)現(xiàn)思路及代碼
  • WPF制作一個(gè)簡(jiǎn)單的倒計(jì)時(shí)器實(shí)例附源碼
  • WPF綁定實(shí)例詳解

標(biāo)簽:喀什 新鄉(xiāng) 臺(tái)州 朝陽(yáng) 朔州 周口 洛陽(yáng) 百色

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細(xì)介紹》,本文關(guān)鍵詞  關(guān)于,WPF,使用,MultiConverter,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細(xì)介紹》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細(xì)介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    平利县| 五大连池市| 濉溪县| 西林县| 沙湾县| 万荣县| 云霄县| 闽侯县| 阳曲县| 开阳县| 宝清县| 府谷县| 广德县| 永善县| 土默特左旗| 化德县| 邳州市| 玉树县| 呼玛县| 青田县| 芦山县| 龙胜| 玉屏| 湖口县| 宁波市| 法库县| 扎鲁特旗| 滨海县| 左云县| 宜兴市| 康平县| 汾阳市| 新晃| 绵竹市| 太康县| 桦川县| 德江县| 嫩江县| 枝江市| 广南县| 边坝县|