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 命名和字段约定,但各有各的。