动态程序集中的WPF xaml对象

本文关键字:WPF xaml 对象 集中 程序 程序集 动态 | 更新日期: 2023-09-27 18:02:47

我正在开发某种互操作性库,遇到了以下问题:

我的互操作性库在Emit的动态程序集中反映来自其他语言的类。并且在构建时没有可用的类。当我尝试将动态程序集放入XAML时使用如下代码:

xmlns:test="clr-namespace:ClassesReflected;assembly=ClassesReflected"
然后用这个 从那里得到一个类
<test:TestDelegate x:Key="dyn" x:Name="dyn"/>

编译时出现错误。

是否有绕过编译时检查或在运行时加载xaml或其他任何使此解决方案工作?

任何小费。高度赞赏。

动态程序集中的WPF xaml对象

我不确定这是否适合你,但有一种方法。

首先你需要定义一个命名空间并忽略它:

 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 xmlns:validation="http://schemas.microsoft.com/winfx/2006/ololo"
 mc:Ignorable="validation"

然后在代码中:

 [assembly: XmlnsDefinition("http://schemas.microsoft.com/netfx/2007/xaml/  
 ololo", "SuperOlolo")]

你可以随意使用这个命名空间:

 <validation:ValidationSummary Style="{StaticResource ValidationSummaryStyle}"
 Width="300" />

这将提供一个清晰的构建。

设计器使用此方法读取设计时属性。

我不知道它是否能提供你在运行时需要的一切,也许有一些技巧可以帮助你。

至少可以使用包装器接口/类使想要在XAML中访问的成员可见。