C# 如何使用MVVM验证字符串/正则表达式?
我正在开发一个小的正则表达式替换工具。该工具由输入字符串、搜索表达式(regex search for textbox)和替换字符串(replace by textbox)组成。我还实现了一个预览标签。预览会在“我的文本框”中的每个文本发生更改时更新 我想添加我的正则表达式搜索表达式的验证。如果正则表达式字符串无效,我想在文本框的末尾添加一个红色图标。我知道如何在旧的winform中实现这一点,但我想在MVVM中实现这一点 此时,我的ViewModel如下所示:C# 如何使用MVVM验证字符串/正则表达式?,c#,.net,mvvm,C#,.net,Mvvm,我正在开发一个小的正则表达式替换工具。该工具由输入字符串、搜索表达式(regex search for textbox)和替换字符串(replace by textbox)组成。我还实现了一个预览标签。预览会在“我的文本框”中的每个文本发生更改时更新 我想添加我的正则表达式搜索表达式的验证。如果正则表达式字符串无效,我想在文本框的末尾添加一个红色图标。我知道如何在旧的winform中实现这一点,但我想在MVVM中实现这一点 此时,我的ViewModel如下所示: private str
private string _searchExpression;
public string SearchExpression
{
get { return _searchExpression; }
set
{
if (value != _searchExpression)
{
_searchExpression = value;
OnPropertyChanged("SearchExpression");
OnPropertyChanged("Preview");
}
}
}
private string _replaceExpression;
public string ReplaceExpression
{
get { return _replaceExpression; }
set
{
if (value != _replaceExpression)
{
_replaceExpression = value;
OnPropertyChanged("ReplaceExpression");
OnPropertyChanged("Preview");
}
}
}
public string Preview
{
get
{
if (SelectedFile != null && SearchExpression != null && ReplaceExpression != null)
try
{
return _renamer.Rename(SelectedFile.ToString(), SearchExpression, ReplaceExpression);
}
catch (Exception)
{
return string.Empty;
}
else
return string.Empty;
}
}
首先,我将在我的业务对象重命名器中创建一个验证方法。接下来呢?我应该在ViewModel中实现什么
- 创建IsValid属性并在Preview方法或SearchExpression的setter中对其求值
- 用对Refresh()方法的简单调用替换所有OnPropertyChanged(“Preview”),在这个Refresh()方法中,我使用了IsValid属性,如果它是有效的,我的Preview属性李>
- 使用转换器
- 其他解决方案
您还知道如何验证正则表达式。在这一刻,我试图创造它,并抓住它,如果它是错误的。是否可以在创建之前对其进行验证?在ViewModel中实现IDataErrorInfo即可。
要查看验证结果,还必须在xaml中将绑定的NotifyOnDataErrors属性设置为True。在ViewModel中实现IDataErrorInfo即可。
要查看验证结果,还必须在xaml中将绑定的NotifyOnDataErrors属性设置为True。+1要创建红色图标,必须创建validation.ErrorTemplate并将其设置为textbox+1;要创建红色图标,必须创建validation.ErrorTemplate并将其设置为textbox