时间:2021-05-25
需求描述
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
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前面已经介绍过Button的使用。通过button按钮,我们还能实现一些诸如按钮状态控制等形式的交互。0x01加载状态添加data-loading-text=”
做一个简单WPF连接数据库的控件类型和名称:DataGrid:dataGridButton1:Button1Button:Button2TextBox:txtu
前言本文主要介绍如何使用OpenCV剪切图形中的人物头像。准备工作首先创建一个Wpf项目——OpenCV_Face_Wpf,这里版本使用Framework4.7
之前一直做WPF现在开始接触Slilverlight感触很多。今天做一个Button要求有两个图片,button默认有一个图片,鼠标over时用另一个图片,用w
在游戏开发中,主角需要通过跑地图来通关升级,本章主要介绍主角的移动和摄像跟随的操作。主角移动角色位移通过主角的骨骼动画控制(后续文章会详细介绍状态机的使用),这