gpt4 book ai didi

没有事件的 C# WPF 序列化 XAML

转载 作者:行者123 更新时间:2023-11-30 23:10:18 25 4
gpt4 key购买 nike

我在 canvas 中动态创建了控件,当我序列化 Canvas 事件时未序列化。

Label label = new Label();
...
label.MouseLeftButtonDown += Control_MouseLeftButtonDown;
label.MouseLeftButtonUp += Control_MouseLeftButtonUp;
label.MouseMove += Control_MouseMove;
label.MouseLeave += Control_MouseLeave;
...

public static string SerializeXAML(UIElement element)
{
string strXAML = System.Windows.Markup.XamlWriter.Save(element);
return strXAML;
}

public static UIElement DeserializeXAML(string XAML)
{
return System.Windows.Markup.XamlReader.Parse(XAML) as UIElement;
}

序列化字符串:

<Canvas Background="#FFFFFFFF" Name="DesignCanvas" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"><Label FontSize="12" Focusable="True" Canvas.Left="363.146190476191" Canvas.Top="179.774339118825" Panel.ZIndex="2">Label</Label></Canvas>

我要<Label ... MouseLeftButtonDown="Control_MouseLeftButtonDown">text</Label>

这可能吗?谢谢

最佳答案

根据以下 MSDN article , 这是不可能的。

Event Handling is Not Preserved

When event handlers that are added through XAML are serialized, they are not preserved. XAML without code-behind (and also without the related x:Code mechanism) has no way of serializing runtime procedural logic. Because serialization is self-contained and limited to the logical tree, there is no facility for storing the event handlers. As a result, event handler attributes, both the attribute itself and the string value that names the handler, are removed from the output XAML.

关于没有事件的 C# WPF 序列化 XAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45425092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com