C# 从Xslt处理器动态加载带有参数的Xaml后绑定事件
窗口加载一些动态Xaml,这些Xaml通过Xslt转换以显示数据源中的某些内容。因为Xaml是动态的,所以在加载事件之前我无法绑定事件-绑定本身是可以的,但是我正在努力找到一种方法来描述源Xaml中的事件数据 假设我的资料来源如下:C# 从Xslt处理器动态加载带有参数的Xaml后绑定事件,c#,wpf,xaml,xslt,C#,Wpf,Xaml,Xslt,窗口加载一些动态Xaml,这些Xaml通过Xslt转换以显示数据源中的某些内容。因为Xaml是动态的,所以在加载事件之前我无法绑定事件-绑定本身是可以的,但是我正在努力找到一种方法来描述源Xaml中的事件数据 假设我的资料来源如下: <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <xsl:variable name="myValue" select="/root/Syste
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<xsl:variable name="myValue" select="/root/System/CustomerFirstName"/>
<Label ##MyClick="method='myMethod', aParameter='$myValue', anotherParameter='test'"##>
<xsl:value-of select="/root/System/CustomerFirstName" />
</Label>
</Grid>
代码将其放入Xslt处理器,如果删除了##之间的位,Xslt处理器就可以完美地工作。我理解为什么它不喜欢MyClick属性,因为它没有定义。我曾尝试添加一个连接,但Xslt解析器似乎不知道(可能我错过了一个连接)。我尝试添加扩展对象,但Xslt解析器希望在解析时调用该方法,而不是在用户单击UI元素时处理该位
我希望Xslt解析器进行预处理,但保留在自定义标记中,以便处理任何内容:
<Label MyClick="method='myMethod', aParameter='Geoff', anotherParameter='test'"> [etc]
[etc]
MyClick内部文本的实际语法并不重要,只要Xslt完成,我就可以遍历生成的Xaml,找到定义了MyClick的任何节点,并对内容进行自己的处理——在本例中,绑定一个Click事件处理程序,然后使用传递的参数执行操作
另一种可能的方法是,它不是定义自定义行为的属性,而是Label元素中的子元素。我可以使用其中一种,例如:
<Label><MyClick><Method>wibble</Method><Parameter Name="name" Value="{$myValue}"></Parameter></MyClick></Label>
wibble
……诸如此类
非常感谢您的想法。您使用哪个XSLT处理器,如何运行它,您从XSLT处理器中得到的错误是什么?格式为
的文本结果元素在任何方面都不是XSLT处理器会失败的,它不需要任何结果元素或属性的定义。您是对的。。。引发异常的是XamlReader,而不是XslCompiledTransform。非常感谢。下次我需要更仔细地阅读。