此问题与此帖有关:Check for Valid Values between two DecimalUpDown Controls - MVVM
动态创建两个DoubleUpDown。如何根据最大值和最小值检查这两者之间的验证。 (最大值[第一控制]不能低于最小值[第二控制])。
XAML代码:
<Window ....>
<Window.DataContext>
<local:ViewModel>
</Window.DataContext>
<StackPanel>
<ItemsControl ItemsSource="{Binding ListOfControls}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<xctk:DoubleUpDown Value={Binding Value, ValidationOnDataErrors=True" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Window>
视图模型
public class ViewModel
{
public ViewModel()
{
_listOfControls = new List<CreateControl>()
{
new CreateControl { Value = 0.0 },
new CreateControl { Value = 0.0 }
};
}
private List<CreateControl> _listOfControls;
public List<CreateControl> ListOfControls
{
get { return _listOfControls; }
set { _listOfControls = value; }
}
}
CreateControl.cs
public class CreateControl : IDataErrorInfo, INotifyPropertyChanged
{
private double _value;
public double Value
{
get { return _value; }
set { _value = value; }
}
public string Error { get { return null; } }
public string this[string columnName]
{
get
{
// Error handling code here
return null;
}
}
PropertyChanged Event ...
}
谢谢
答案 0 :(得分:-1)
如果你总是创建两个控件,一个用于最大值,另一个用于最小值,那么使用ItemsControl
是没有意义的,因为那么控件的数量毕竟不是动态的。
请删除ItemsControl
并使用我在上一个问题中建议的方法:
<Window ....>
<Window.DataContext>
<local:ViewModel>
</Window.DataContext>
<StackPanel>
<xctk:DoubleUpDown Value="{Binding Min, ValidationOnDataErrors=True" />
<xctk:DoubleUpDown Value="{Binding Max, ValidationOnDataErrors=True" />
</StackPanel>
</Window>
ItemsControl
似乎不是正确的选择。