2014-07-09 46 views
0

我的複選框有問題。 我有一個MainWindow(),從這裏打開我的第二個窗口爲用戶設置一些searchpropertys。 (在他們想要搜索的字段中...如名稱,名字和其他) 用戶確認他的選擇後,窗口關閉,值保存在app.propertys中。 在應用程序的下一次啓動之前,來自會話的值仍然是它們應該是的,所以這部分工作。C#WPF打開一個窗口,但沒有設置複選框

現在的問題: 如果我現在打開窗口所有的複選框nt設置像他們應該?! 我把它們綁定到我的視圖模型是這樣的:

<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"); 
       } 
      } 
     } 

後,啓動我設置的所有綁定propertys與應用程序的價值.propertys。 但它沒有改變。該Checkboxvalues總是假:-(

我想它,因爲我不使用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; 
     } 

和負載()類:

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(); 
      } 

我一定先以某種方式初始化Propertys?認爲這是自動發生的?!

+0

你用什麼來將數據綁定到視圖?棱鏡? MVVMLight?或者你剛纔實現了OnPropertyChanged? –

+0

你使用了哪個'OnPropertyChanged'的實現?如果您自己實施它,請張貼代碼。 (和:以防萬一你通過從DependencyObject派生你的ViewModel類來使用'DependencyObject.OnPropertyChanged()',這將是錯誤的。) –

+0

嗨,我有一個ViewModelBase提供OnPropertyChange。它從這邊http://www.cocktailsandcode.de/2012/04/mvvm-tutorial-part-4-viewmodel/。 – user3793935

回答

0

您是否設置了DataContext?

public MyWindow(MyClass myClass){ 
InitializeComponent(); 
this.DataContext = myClass; 
} 

Before InitializeComponent();所有的GUI - 元素都將爲空!

如何從主窗口讓你的元素:

public MyClass GetData() 
{ 
    MyClass data = this.DataContext as MyClass; 
    return data; 
} 

,並嘗試:

IsChecked="{Binding Path=Versichertenstatuschecked}" 
+0

嗨,我初始化組件之前,我做其他的東西和上下文設置。 – user3793935

+0

您是否嘗試過以下方法:IsChecked =「{Binding Path = Versichertenstatuschecked}」 – Bjego

+0

是的,我做過了。最後是一樣的。 – user3793935

0

我想我知道是什麼問題。你錯過了綁定的Mode

IsChecked="{Binding Versichertenstatuschecked, Mode=TwoWay}" 

使用此命令將觸發viewModel中的更改顯示在視圖中。

+0

嗨,那沒有解決這個問題。我猜是因爲我不使用OnPropertyChanged,但我真的不知道爲什麼它導致我對象引用問題:( – user3793935

0

我自己解決了這個問題。 我只需要等到窗口加載之前我使用我的類設置bindingpropertys。 我用「加載」事件來調用類和jeah,不再有任何對象引用錯誤:)

這樣的事情是令人沮喪的。

Cya