mmc*_*rey 2 c# wpf prism mvvm viewmodel
我做了一些谷歌搜索,并没有找到这个难题的答案.
如果您有以下内容:
MySuperView有两个文本框,它们都绑定到ViewModel上的字符串属性,并使用DelegateCommand将"保存"按钮绑定到ViewModel,使用如下语法:
视图模型:
this.SaveOrderCommand = new DelegateCommand<object>(this.Save, this.CanSave);
Run Code Online (Sandbox Code Playgroud)
视图:
Command="{Binding SaveOrderCommand}"
Run Code Online (Sandbox Code Playgroud)
如何处理UI元素以使用户交互更令人满意.例如,假设在DelegateCommand的保存操作期间发生了一些较低级别的故障,并且您希望触发其中一个TextBox的工具提示.这通常会如何发生?
我想尽可能坚持干净的代码隐藏,但我并不反对将特定于UI的代码放在那里.
我建议您的ViewModel实现IDataErrorInfo,以便您可以利用WPF中的验证内容.您无需等到有人点击保存按钮,一旦文本框得到更新,它将被验证.
public string this[ColumnName]
{
if (Column == "TextProperty")
{
if(!ValidateTextProperty())
return "TextProperty is invalid";
}
}
void Save(object param)
{
if (CanSave)
{
if (string.IsNullOrEmpty(this["TextProperty"])
{
//Add Save code here
}
}
}
Run Code Online (Sandbox Code Playgroud)
在您的视图中:
<TextBox Text={Binding TextProperty, ValidateOnDataErrors="true",
UpdateSourceTrigger=PropertyChanged}/>
Run Code Online (Sandbox Code Playgroud)
这将在文本框周围放置一个红色框,您可以在文本框样式中添加验证错误模板以添加工具提示,请参见此处