我想要做的是在 ILoginView 类型 ComboBoxItemChange.cs 中创建属性是LoginWindow.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);
}
答案 0 :(得分:1)
如评论中所述:
您正在创建两个不同的实例:
ILoginView
设置为窗口本身ILoginView
的网格资源中的第二个。删除您在XAML中声明的实例,并从您在代码后面创建的实例中解析绑定。 (DataContext将自动为子控件继承)。