当从视图模型访问窗口时,它总是空的

本文关键字:视图 模型 访问 窗口 | 更新日期: 2023-09-27 18:10:43

我要做的是创建属性到模型ComboBoxItemChange.cs类型ILoginView这是接口 loginwindows .xaml.cs派生。使用这个属性,我想授予访问LoginWindow中的元素。我认为这是使用MVVM模式的正确方法。我的问题是属性总是null

LoginWindow.xaml.cs

public partial class LoginWindow : Window, ILoginView
{
    public LoginWindow()
    {
       InitializeComponent();
       this.DataContext = new ComboBoxItemChange();
       (this.DataContext as ComboBoxItemChange).LoginWindow = this as ILoginView;
    }
    public void ChangeInputFieldsByRole(string role)
    {
        MessageBox.Show(role);
    }
}

ComboBoxItemChange.cs

public class ComboBoxItemChange : INotifyPropertyChanged
{
    public ILoginView LoginWindow { get; set; }
    private void ChangeloginWindowInputFields(string value)
    {
       if (LoginWindow == null)
            return;
       LoginWindow.ChangeInputFieldsByRole(value);
    }
}

ILoginView.cs

public interface ILoginView
{
    void  ChangeInputFieldsByRole(string role);
}

当从视图模型访问窗口时,它总是空的

如注释所述:

您正在创建两个不同的实例:

  • 设置ILoginView为窗口本身的代码
  • 第二网格资源,你没有设置ILoginView

删除您在XAML中声明的实例,并让绑定从您在后面代码中创建的实例中解析。(子控件将自动继承DataContext)