【问题标题】:clone Xaml FramworkElement in WinRT在 WinRT 中克隆 Xaml FramworkElement
【发布时间】:2013-02-14 20:16:37
【问题描述】:

我需要在 WinRT 中的 CodeBehind 中克隆 FrameworkELement...

我确实在 Internet 上找到了解决方案,但此解决方法在 WinRT 中不起作用,因为 XamlWriter 在 winRT 中不可用! Is there an easy/built-in way to get an exact copy (clone) of a XAML element?

还有其他方法可以获取我的FrameworkElement 的另一个实例吗?

【问题讨论】:

    标签: windows-runtime clone frameworkelement xamlwriter


    【解决方案1】:

    我认为没有一种简单的方法可以准确地克隆一个元素 - 例如,我不知道是否有一种方法可以找出设置在一个元素上的任意附加属性,或者找出属性是否按样式设置、动画、模板、显式值等。

    如果您有一个要克隆的特定元素树,则有一种方法可能是您的方案的解决方案 - 只需将其放在 XAML 中的 DataTemplate 中,然后在后面的代码中按名称或资源键检索该模板并调用LoadContent() 从模板生成一个实例。

    如果您的 XAML 中已经有您的原始文件,您不想再放入资源并从后面的代码生成或布局 - 只需将其包装在 ContentControl/ContentTemplate/DataTemplate 中。

    【讨论】:

    • 我感觉自己是地球上最大的新手! :D - 我的FrameworkElement 我想从外部库中获取一个实例......所以我需要在我的代码中创建该数据模板......我没有找到解决方案如何在 WinRT 中执行此操作!? ?!这甚至可能吗?
    • 我不明白你为什么需要在代码后面这样做。您可以将其放入您的ResourceDictionary 并从那里获取。否则 - 为什么不简单地在后面的代码中创建它?问题是你不知道它实际上是如何定义的?
    • 我从包含FrameworkElement 的外部库中获得了对象的Collection。这个FrameworkElement 包含一些面板,包括一个带有各个 XAML 元素的画布。所以我的状态是我从FrameworkElement 获得了Instance,但我不知道如何在 WinRT 中将其转入DataTemplate
    • 在那种情况下,我的解决方案对您没有帮助,因为使用 DataTemplate 的全部目的是避免必须自己创建元素。唯一的可能性是,也许您还可以获得最初用于生成您获得的 FrameworkElement 的 DataTemplate。什么样的库可以为您提供 FrameworkElement 实例的集合???
    • 如果它还允许您访问生成这些元素的ItemsControl (ListBox/ListView/GridView/ComboBox 等) - 您应该能够获得通过获取 ItemsControlItemTemplate/ItemTemplateSelectorFrameworkElementDataContext 来获取元素,这是集合中的项目。
    猜你喜欢
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多