2009-11-19 37 views
0

情境:WPF UserControl默認構造函數

我有一個用戶控件,我將其添加到擴展器中。 我有一個構造函數,它需要一些參數。 我也有一個默認的構造函數,它只是調用InitializeComponent。 我用params調用構造函數來設置用戶控件。 然後將用戶控件添加到擴展器。此時擴展器不擴展。 當我去擴展擴展器的默認構造函數被調用,我失去了先前傳入的所有設置。

接下來,我使用參數移除了構造函數,並通過公共屬性設置了用戶控件,但仍然默認的構造函數被稱爲在擴展了擴展器時擦除所有設置。

誰能告訴我爲什麼,以及如何避免這種情況?

感謝 傑森

回答

0

聽起來就像是擴展創建和刪除ContentPresenter以節省內存。解決方法是不要在代碼中設置用戶控件,並使用數據綁定綁定到數據 - 這樣可以創建和刪除所需的所有內容,並且綁定將修復所有內容

+0

我確實有數據綁定在工作正常的ctrls上,用戶控件上的圖像和標籤具有有效的圖像和文本。問題是有其他公共成員變量,但我需要獲取和設置數據。這些成員變量持有的信息丟失。 – Jay 2009-11-19 17:09:10

+0

將公共成員變量綁定到您的Window,並設置這些 - 試圖直接設置公共成員變量是一個反模式 – 2009-11-20 20:41:04