使用 MVVM、Devexpress WPF、c#
例如,我在一个视图中有两个项目(我在实际项目中有更多),并使用它们让用户输入一些搜索参数并需要验证它们,同时禁用另一个,如果在第一个字段中写入了某些内容并且过分.
我做什么,我使用验证来确定值的长度,即使输入的文本的长度不符合要求的长度,我也需要启用/禁用
查看 Xaml:
<dxe:TextEdit
Text="{Binding SearchField1, UpdateSourceTrigger=PropertyChanged}"
Validate="searchFieldValidate"/>
<dxe:TextEdit
IsEnabled="{Binding IsTextItemEnabled}"
Text="{Binding SearchField2, UpdateSourceTrigger=PropertyChanged}"
Validate="searchFieldValidate"/>
C#
private void searchFieldValidate(object sender, DevExpress.Xpf.Editors.ValidationEventArgs e)
{
if (e.Value == null) return;
if (e.Value.ToString().Length > 5) return;
e.IsValid = false;
e.ErrorType = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning;
e.ErrorContent = "Enter more than 5 symbol";
}
ViewModel 在这里我设置 IsTextItemEnabled 取决于值是空还是 mot
public string SearchField1
{
get { return _searchField1; }
set
{
if (value != _searchField1)
{
_searchField1 = value;
if (!String.IsNullOrEmpty(value))
IsTextItemEnabled = false;
else
IsTextItemEnabled = true;
RaisePropertiesChanged("SearchField1");
}
}
}
一个问题是 RaisePropertiesChanged 在字段长度未达到 5 个符号之前不起作用
你能帮我解决这个问题吗?首先,我试图禁用一个字段,所以我使用一个 bool IsTextEnabled .. 那么相反的变体呢...