【问题标题】:Load Element from XAML从 XAML 加载元素
【发布时间】:2012-02-04 04:13:11
【问题描述】:

我有一个这样的自定义 XAML 用户控件:

<UserControl x:Class="CheckPoint.Modules.Beach.Beach_Shape"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Polygon Name="Shape"></Polygon>
    </Grid>
</UserControl>

我希望 xaml 使用 XamlWrite.Save 对其进行序列化,然后使用 XamlReader.Load 重新加载它。

XmlReader reader = XmlReader.Create(new StringReader(xml));
UserControl uc=(UserControl)XamlReader.Load(reader);
myGrid.Children.Add(uc);

“uc”在 myGrid 上正确显示,但“uc”对象逻辑不正确,因为 Shape 元素未正确加载,例如,即使它在 xaml 中,也没有设置背景、描边或点。

我尝试重新加载它

Shape=myGrid.Findname("Shape");

但它也不起作用。

那么,我的错误在哪里?

【问题讨论】:

    标签: c# wpf xaml xamlreader


    【解决方案1】:

    这可能是您问题的答案(来自 MSDN 文章 Serialization Limitations of XamlWriter.Save):

    调用 Save 序列化内容的基本原理是 结果将是被序列化的对象的表示,在 运行。原始 XAML 文件的许多设计时属性可能 在加载 XAML 时已经优化或丢失 内存中的对象,并且在调用 Save 时不会保留 连载。序列化的结果是 构建应用程序的逻辑树,但不一定是 生成它的原始 XAML。这些问题使它非常 难以将 Save 序列化用作扩展 XAML 的一部分 设计表面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多