我的窗口中有两个DecimalUpDown控件。应该显示TextBox的另一个最小值的最大值。 最小控制的值不能大于最大值,反之亦然。
请注意,红色值是错误的。
我该如何实现?我正在使用MVVM模式。
谢谢。 史蒂夫
答案 0 :(得分:1)
您应该在视图模型中实现验证逻辑:
public class MyViewModel : IDataErrorInfo
{
private int _min;
public int Min
{
get { return _min; }
set { _min = value; }
}
private int _max;
public int Max
{
get { return _max; }
set { _max = value; }
}
public string Error { get { return null; } }
public string this[string columnName]
{
get
{
switch(columnName)
{
case "Min":
if (_min > _max)
return "Min cannot be greater than Max";
break;
case "Max":
if (_max < _min)
return "Max cannot be smaller than Min";
break;
}
return null;
}
}
}
<强> XAML:强>
<xctk:IntegerUpDown Value="{Binding Min,ValidatesOnDataErrors=True}" />
<xctk:IntegerUpDown Value="{Binding Max,ValidatesOnDataErrors=True}" />
有关WPF中数据验证的工作原理的更多信息,请参阅以下博文:https://blog.magnusmontin.net/2013/08/26/data-validation-in-wpf/。
您基本上可以在视图模型中实现IDataErrorInfo
或更新INotifyDataErrorInfo
。
答案 1 :(得分:-1)
据我所知,您需要比较VM属性的setter中的max和min值
答案 2 :(得分:-2)
您可以在文本框中使用onChange事件。 (选择您的textBox并检查事件窗口,您将找到所有事件)
Wen change =&gt;比较价值 如果错误=&gt;显示消息