gpt4 book ai didi

c# - 与 MVVM 的用户界面交互

转载 作者:行者123 更新时间:2023-11-30 20:14:00 25 4
gpt4 key购买 nike

我进行了一些谷歌搜索,但没有找到这个难题的答案。

前提是你有:

  • 我的 super View
  • 我的 super View 模型

MySuperView 有两个文本框都绑定(bind)到 ViewModel 上的字符串属性并且您使用 DelegateCommand 将“保存”按钮绑定(bind)到 ViewModel,使用的语法如下:

View 模型:

this.SaveOrderCommand = new DelegateCommand<object>(this.Save, this.CanSave);

查看:

Command="{Binding SaveOrderCommand}"

您如何处理 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
}
}
}

在您看来:

    <TextBox Text={Binding TextProperty, ValidateOnDataErrors="true",
UpdateSourceTrigger=PropertyChanged}/>

这将在文本框周围放置一个红色框,您可以将验证错误模板添加到文本框样式以添加工具提示,请参阅 here

关于c# - 与 MVVM 的用户界面交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1071387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com