我想序列化wpf用戶控件xaml和代碼隱藏。 XamlWriter.Save()
只有序列化的XAML,所以我能在這種情況下做什麼?我的情況是我有一個用戶控件,其中包括自定義方法,訂閱事件(例如:按鈕點擊)當我反序列化usercontrol(用於在運行時創建用戶控件)時,我想運行該事件和方法。對不起,我的英語不太好。我如何序列化wpf用戶控件與xaml和後面的代碼
回答
只是一個想法,您可以使用MEF爲您的用戶控件構建一個插件結構。你想立即創建一個用戶控件,但事件處理程序仍然應該在你的項目的其他地方硬編碼;通過插件結構,您可以收集插件並重新使用它;事件可以通過命令來處理。也許給一個場景,我們可以弄清楚更多的細節。
另外,ISerializable爲字段提供了自定義二進制序列化的方法,而不是方法或事件。這裏有一個相關的問題: What is the point of the ISerializable interface? ;另一方面,您仍然可以嘗試一些模式,例如Web控件如何保存其視圖狀態;例如 兩個虛擬方法:
public virtual byte[] SaveState(); // it saves the states for your custom control
public virtual void LoadState(byte[] state) // it restore your state back to the control.
自定義代碼應該是這樣的:
byte[] state = controlA.SaveState(); // this method saves its own state.
YourControl controlB = new YourControl();
controlB.LoadState(state); // this method load the save state from A to B itself.
對於事件,每個事件都有一個處理程序的名字,你也可以序列化的處理程序名稱的狀態和通過命名容器中保存的名稱找回它。我沒有任何經驗可以保存該方法。
如果你仍然想保存和加載狀態,包括字段,事件和方法,可能序列化不是你想要的正確方式,我認爲。
UserControl繼承ISerializable接口。我序列化和反序列化usercontrol而不會丟失任何成員,事件,方法。我可以解釋一下,因爲我的英語不太好 –
我更新了我的答案,請檢查它。 – Howard
謝謝你的所有文章 –
- 1. 如何序列化WPF中的控件+代碼?
- 2. 文件和MVC後面的XAML代碼
- 3. 序列化WPF用戶控件
- 4. WPF - 如何從代碼集中的用戶控件背後
- 5. 從代碼後面添加一個WPF用戶控件
- 6. WPF:如何從後面變量的代碼在XAML
- 7. WPF XAML序列化/反序列化
- 8. 如何將WPF控件綁定到後面的代碼?
- 9. 如何從代碼中訪問XAML按鈕後面WPF
- 10. 用代碼塊添加用戶控件,代碼不在後面
- 11. 用戶控制後面的代碼
- 12. 如何訪問後面的aspx代碼中的用戶控件控件
- 13. WPF用戶控件使用XAML
- 14. 如何發送和使用JS後面的代碼序列化的對象?
- 15. 集XAML代碼的ItemsSource = 「{結合}」 與後面的代碼
- 16. WPF MVVM +用戶控件代碼隱藏
- 17. WPF用戶控件與通用的代碼隱藏
- 18. diplay面板與零代碼點擊後面使用MVVM和WPF
- 19. WPF,Xaml和控件工廠?
- 20. WPF用戶控件XAML結合
- 21. WPF用戶控件XAML命令
- 22. WPF窗口/用戶控件繼承XAML
- 23. XAML WPF用戶控件更改狀態
- 24. 將xaml列映射到wpf datagrid後面的代碼中生成的列
- 25. 將用戶控件序列化爲xaml,但不是子項?
- 26. WPF DataGrid:如何使用後面的代碼執行列綁定?
- 27. 如何實例化用戶控件和XAML
- 28. 僅使用XAML代碼有條件加載WPF控件
- 29. 如何在代碼後面找到客戶端控件?
- 30. WPF從後面的代碼格式化貨幣列
爲什麼要序列化代碼? – gideon
你能解釋一下你爲什麼要這樣做嗎?你不能使用Reflector來獲取C#代碼嗎? –
,因爲我將在運行時創建用戶控件。例如;一個用戶控制的按鈕,當反序列化usercontrol我想運行該事件時,有一個點擊事件(訂閱)。 –