c# - 在 MVVM 中正确放置属性的位置
问题描述
昨天我在这里问视图模型如何相互通信。因为我的程序的设计是。视图模型包含一个属性。示例一个名为的属性DirectoryPath
,在另一个视图模型中我想访问DirectoryPath
下面是链接
然后另一个问题出现了。评论说。我做错了。
假设我有一个文本框。
然后我想创建一个DirectoryPath
字符串属性,它将绑定在文本属性中。那我应该把这个属性放在哪里?
我怎样才能访问它?在我的视图模型中,我有一个命令。如何设置DirectoryPath
用户单击按钮时的文本?
这个月我都在做 MVVM 和 WPF 错了吗?我想解决这个问题。
我的 ViewModel 的示例代码
class ViewModel : INotifyPropertyChanged
{
private string _DirectoryPath;
public string DirectoryPath
{
get { return _DirectoryPath; }
set
{
_DirectoryPath = value;
OnPropertyChanged("DirectoryPath");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
解决方案
然后我想创建一个 DirectoryPath 字符串属性,它将绑定在 text 属性中。那我应该把这个属性放在哪里?
你财产的地方在我看来是正确的。
在我的视图模型中,我有一个命令。当用户单击按钮时,如何设置 DirectoryPath 的文本?
您将委托添加到命令中,在委托中您将DirectoryPath
变量设置为您想要的值。
public Command Something => new Command (x => DirectoryPath = 'this is you value');
推荐阅读
- javascript - 为什么我的 React material-ui Grid 没有占据整个屏幕高度?
- firebase - 转型指导收费吗?
- c# - c# foreach 目录中的文件但按特定顺序
- python - 执行sklearn Column Transformer后如何获取新列的名称
- reactjs - 在 Expo CLI 中 react-router-native 给出错误 - React Native
- hadoop - 如何使用 apache Drill 查询启用了 kerberos 的 hbase?
- c++ - 消除 C++ 中的冗余模板参数
- html - 如何设置响应式导航栏,下拉网站内容?
- c - 对同一列中的整数求和
- c++ - 在值返回函数中返回多个值