C# 如何从MVVM中的嵌套类调用ValidationResult
我在同一个C# 如何从MVVM中的嵌套类调用ValidationResult,c#,wpf,xaml,C#,Wpf,Xaml,我在同一个ViewModel中使用了ValidationResult,但是现在我需要在ViewModel类中创建一个嵌套类并实现ValidationResult,我不知道如何修改我的XAML来调用嵌套类 有什么帮助吗 public class AlgorithmSelectionViewModel : ValidationRule,INotifyPropertyChanged, IAlgorithmAccessor { private double _algorithmWeight = 1.0;
ViewModel
中使用了ValidationResult
,但是现在我需要在ViewModel
类中创建一个嵌套类并实现ValidationResult
,我不知道如何修改我的XAML来调用嵌套类
有什么帮助吗
public class AlgorithmSelectionViewModel : ValidationRule,INotifyPropertyChanged, IAlgorithmAccessor
{
private double _algorithmWeight = 1.0;
public AlgorithmSelectionViewModel()
{ }
public double AlgorithmWeight
{
get { return _algorithmWeight; }
set
{
_algorithmWeight = value;
OnPropertyChanged("AlgorithmWeight");
}
}
public double MinAlgorithmWeight
{
get;
set;
}
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
double AlgorithmWeight;
Boolean noIllegalChars;
noIllegalChars = double.TryParse(value.ToString(), out AlgorithmWeight);
if (value.ToString().Length < 1)
{
return new ValidationResult(false, "Algorithm Weight field cannot be empty");
}
else if (noIllegalChars == false)
{
return new ValidationResult(false, "Illegal Characters");
}
else if (AlgorithmWeight <= MinAlgorithmWeight)
{
return new ValidationResult(false, "Value must be bigger or equal to " + MinAlgorithmWeight);
}
else
{
return new ValidationResult(true, null);
}
}
}
公共类算法SelectionViewModel:ValidationRule,INotifyPropertyChanged,IAlgorithMacAccessor
{
私有双算法权重=1.0;
公共算法SelectionViewModel()
{ }
公共双算法权重
{
获取{return\u algorithmWeight;}
设置
{
_算法权重=值;
OnPropertyChanged(“算法权重”);
}
}
公共双MinAlgorithmWeight
{
收到
设置
}
公共覆盖验证结果验证(对象值,CultureInfo CultureInfo)
{
双重算法权重;
布尔noilegalchars;
noIllegalChars=double.TryParse(value.ToString(),out AlgorithmWeight);
if(value.ToString().Length<1)
{
返回新的ValidationResult(false,“算法权重字段不能为空”);
}
else if(noIllegalChars==false)
{
返回新的ValidationResult(false,“非法字符”);
}
否则如果(AlgorithmWeight您绑定的对象模型是否实现了IDataErrorInfo
?这是WPF出于验证目的所期望的接口。不,我没有,在嵌套类的情况下我是否需要它,因为当它在同一个ViewModel中或当我从ViewModel创建一个单独的类时,我建议实现任何vali使用IDataErrorInfo
接口进行验证。这是WPF用来验证绑定的内容,也是验证的内容。HasError
应该参考的内容。
<TextBox Grid.Column="1"
HorizontalAlignment="Stretch"
Margin="0,0,0,15"
Name="textBox_algorthWheight"
VerticalAlignment="Center">
<TextBox.Text>
<Binding Path="AlgorithmWeight" StringFormat="N1" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True">
<Binding.ValidationRules>
<bulkWpf:AlgorithmSelectionViewMode MinAlgorithmWeight ="0"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>