当从视图模型访问窗口时,它总是空的
本文关键字:视图 模型 访问 窗口 | 更新日期: 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)。