2013-03-19 54 views
1

當創建該變量的新實例時,是否可以保留變量的數據綁定?更改實例時保留數據綁定

我所擁有的是將所有用戶輸入存儲在winform應用程序中的設計,因此這些值可以通過xml存儲/加載。我發現當我將設計重新加載到我的程序中時,數據綁定會在創建變量的新實例時丟失。我設法通過使用反射來將新的數據值複製到當前的數據綁定實例,但這隻能達到一個深度級別。

示例XML文件:

<design> 
    <level1> 
     <myRadioButton>true</myRadioButton>//This value is copied onto the 
             //data bound object 
    </level1> 
<level1> 
    <level2> 
     <myRadioButton>true</myRadioButton>//This value is not as a new instance 
        // of level2 is made removing the data binding instance object 
    </level2> 
<level1> 
</design> 

實例數據綁定:

radioButton.DataBindings.Add("Checked",Instances.Variables.Design.Level1, 
       "myRadioButton", false,DataSourceUpdateMode.OnPropertyChanged); 
radioButton.DataBindings.Add("Checked",Instances.Variables.Design.Level1.Level2, 
       "myRadioButton", false, DataSourceUpdateMode.OnPropertyChanged); 

如果需要任何其他代碼示例,那麼請讓

回答

1

您可以檢查所有控件的數據綁定在你的形成。如果當前數據源是您的舊xml對象,請除去數據綁定,然後添加一個新的數據綁定,其中包含相同的參數,但應使用新的xml對象。

基本上通過刪除當前的數據綁定並添加一個新的數據綁定來「刷新」所有必要的數據綁定。

+0

啊,所以基本上你只是說在我重新加載設計之後調用所有的數據綁定方法? (我假設我的數據綁定已被刪除,當實例被刪除) – Sayse 2013-03-19 08:43:14

+0

@Sayse不知道你的意思是什麼'實例',但通常,不,數據綁定不會自動刪除。如果'instance'指的是你的數據源,那麼不是,你的實例可能會從你存儲它的地方刪除,但它仍然在內存中,並被數據綁定引用。 您將不得不手動刪除數據綁定。 – Maarten 2013-03-19 08:46:13

+0

好吧,我明白了,是的,這是我所指的實例。我會在接下來的一小時內嘗試你的建議並接受你的回答。謝謝! – Sayse 2013-03-19 08:47:56