我正在开发一个小型RegEx替换工具。该工具由输入字符串,搜索表达式(正则表达式搜索文本框)和替换字符串(由文本框替换)组成。我还实现了预览标签。预览会根据文本框中每个文本的更改文本进行更新。
我想添加我的正则表达式搜索表达式的验证。如果RegEx字符串无效,我想在文本框的末尾添加一个红色图标。我知道如何在旧的winform中做到这一点,但我想在MVVM中实现它
此时我的ViewModel是这样的:
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;
}
}
首先,我将在业务对象_renamer中创建一个验证方法。接下来是什么?我应该在ViewModel中实现什么?
您也知道如何验证正则表达式。此刻我尝试创建它,如果它错了就抓住它。是否可以在创建之前对其进行验证?
答案 0 :(得分:3)
在ViewModel中实现IDataErrorInfo会做的事情。 要查看验证结果,您还必须在xaml中将绑定的NotifyOnDataErrors属性设置为True。