C# - WPF/MVVM - 无法从视图中设置 属性 值
C# - WPF/MVVM - Unable to set property value from view
我正在我的视图中打开一个对话框以响应按钮单击。我有一个文件 class,文件路径 属性 如下所示:
FileClass.cs
private string _filePath;
public string FilePath
{
get { return _filePath; }
set
{
_filePath = value;
OnPropertyChanged();
}
}
我在我的 viewModel 中创建了一个实例:
视图模型
public MyFile myFile;
public ViewModel()
{
myFile = new MyFile();
}
问题是当我尝试在视图中使用 属性 时:
if (openFileDialog.ShowDialog() == true)
{
filePath = openFileDialog.FileName;
(this.DataContext as ViewModel)?.myFile.FilePath = filePath; // error
}
为什么我不能这样做?
如果您阅读错误,它会告诉您 (this.DataContext as ViewModel)?.myFile.FilePath
不是 l-value。也是non-sense.
改用这个:
((ViewModel)DataContext).myFile.FilePath = filePath;
当然,您的设置违反了 MVVM 准则以及 .Net 命名和字段约定,但各有各的。
我正在我的视图中打开一个对话框以响应按钮单击。我有一个文件 class,文件路径 属性 如下所示:
FileClass.cs
private string _filePath;
public string FilePath
{
get { return _filePath; }
set
{
_filePath = value;
OnPropertyChanged();
}
}
我在我的 viewModel 中创建了一个实例:
视图模型
public MyFile myFile;
public ViewModel()
{
myFile = new MyFile();
}
问题是当我尝试在视图中使用 属性 时:
if (openFileDialog.ShowDialog() == true)
{
filePath = openFileDialog.FileName;
(this.DataContext as ViewModel)?.myFile.FilePath = filePath; // error
}
为什么我不能这样做?
如果您阅读错误,它会告诉您 (this.DataContext as ViewModel)?.myFile.FilePath
不是 l-value。也是non-sense.
改用这个:
((ViewModel)DataContext).myFile.FilePath = filePath;
当然,您的设置违反了 MVVM 准则以及 .Net 命名和字段约定,但各有各的。