如何用xaml和后面的代码序列化wpf用户控件?

本文关键字:wpf 序列化 用户 控件 代码 xaml 何用 | 更新日期: 2023-09-27 18:04:25

我想序列化wpf用户控件xaml和代码隐藏。XamlWriter.Save()只序列化xaml,在这种情况下我该怎么做?我的情况是我有一个用户控制,其中包括自定义方法,订阅的事件(例如:按钮单击)当我反序列化用户控制(在运行时创建用户控制),我想运行的事件和方法。对不起,我的英语不是很好。

如何用xaml和后面的代码序列化wpf用户控件?

只是一个想法,您可以使用MEF为您的用户控件构建一个插件结构。你想在飞行中创建一个用户控件,但事件处理程序仍然应该硬编码在你的项目的其他地方;使用插件结构,您可以收集插件并重用它;事件可以通过命令来处理。也许给一个场景,我们可以找出更多的细节。

另外,isserializable提供了一种自定义二进制序列化字段的方法,而不是方法或事件。这里有一个相关的问题:isserializable接口的意义是什么?;另一方面,你仍然可以尝试一些模式,比如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.

对于事件,每个事件都有一个处理程序名称,您还可以将其处理程序名称序列化到状态,并通过保存的名称从其命名容器中找到它。我没有任何保存方法的经验。

如果你仍然想保存和加载状态,包括字段,事件和方法,也许序列化不是你正在寻找的合适的方式,我认为