打开一个窗口,但没有设置复选框
本文关键字:复选框 设置 窗口 一个 | 更新日期: 2023-09-27 18:12:19
我有一个问题与我的复选框。我有一个主窗口(),从这里我打开我的第二个窗口设置一些搜索属性的用户。(他们想在哪些领域搜索……)如姓名、名及其他)在用户确认他的选择后,窗口被关闭,值被保存在app. properties中。在下次启动应用程序时,之前会话的值仍然是它们应该的样子,所以这部分工作。
现在的问题是:如果我现在打开窗口,所有的复选框都没有像他们应该的那样设置?!我把它们像这样绑定到我的ViewModel上:
<CheckBox x:Name="cVersichertenstatus" Content=... **IsChecked="{Binding Versichertenstatuschecked}"** .../>
我的绑定锁的代码如下:
private bool versichertenstatusischecked;
public bool Versichertenstatuschecked
{
get
{
return versichertenstatusischecked;
}
set
{
if (Versichertenstatuschecked != value)
{
versichertenstatusischecked = value;
//this.OnPropertyChanged("Versichertenstatuschecked");
}
}
}
启动后,我用app.propertys的值设置所有的绑定属性。但这改变不了什么。checkbox的值总是false:-(
)我想这是因为我不使用OnPropertyChanged,但如果我尝试我得到这个错误:
object reference not set to an instance of the object
我不明白,我有很多绑定,都工作得很好,只有复选框的事情不。
有人能告诉我我该怎么做才能解决这个错误吗?
编辑:Set the Datacontext :
public MainWindow()
{
InitializeComponent();
SetupBindings();
var l = new app_config_load();
l.load();
}
private void SetupBindings()
{
pViewModelList viewModel = new pViewModelList();
plistview.DataContext = viewModel;
}
和load()类:
public void load()
{
Properties.Settings get = new Properties.Settings();
pViewModelList a = new pViewModelList();
a.Nachnamechecked = get.cnachname_app;
a.Versichertenstatuschecked = get.cversichertenstatus_app;
a.Geburtsdatumchecked = get.cgeburtsdatum_app;
a.Versicherungsnrchecked = get.cversichertennummer_app;
a.Vornamechecked = get.cvorname_app;
get.Save();
}
我是否必须首先以某种方式初始化属性?你以为这是自动发生的吗?
是否设置了DataContext?
public MyWindow(MyClass myClass){
InitializeComponent();
this.DataContext = myClass;
}
之前InitializeComponent ();所有的GUI元素将为空!
如何从MainWindow获取元素:
public MyClass GetData()
{
MyClass data = this.DataContext as MyClass;
return data;
}
和尝试:
IsChecked="{Binding Path=Versichertenstatuschecked}"
我想我知道问题是什么了。您错过了绑定的Mode
。
IsChecked="{Binding Versichertenstatuschecked, Mode=TwoWay}"
使用它将触发viewModel中的更改,以显示在视图中。
我自己解决了这个问题。我只需要等到窗口加载之前,我使用我的类来设置绑定属性。我使用了"loaded"事件来调用Class和jeah,不再有任何对象引用错误:)
这样的事情真令人沮丧。
自保"