Вот один из примеров
public interface IMainAppWindow
{
event EventHandler Closed;
}
// version 1 main window
public MainForm : Form , IMainAppWindow
{
}
// version 2 main window
public MainWindow : Window , IMainAppWindow
{
event EventHandler Closed;
public void OnClosed(object sender,RoutedEventArgs e)
{
if(Closed != null)
{
Closed(this,e);
}
}
}
У меня есть такой код в одном из моих приложений. Приложение было написано в winforms, а затем обновлено до WPF.
Поскольку шаблон ожидает набор узлов, необходимо выполнить:
<xsl:call-template name="dumpDebugData">
<xsl:with-param name="elementToDump" select="some/xpath" />
</xsl:call-template>
Попробуйте что-то вроде этого:
<xsl:call-template name="dumpDebugData">
<xsl:with-param name="elementToDump">foo</xsl:with-param>
</xsl:call-template>
В исходном XSLT есть ряд проблем, поэтому я проработал его и получил следующий код, который делает то, что вы хотите. Я считаю :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="element()">
<xsl:call-template name="dumpDebugData">
<xsl:with-param name="elementToDump" select="." />
</xsl:call-template>
<xsl:apply-templates />
</xsl:template>
<xsl:template name="dumpDebugData">
<xsl:param name="elementToDump" />
Node:
<xsl:value-of select="name()" />
:
<xsl:value-of select="text()" />
<xsl:for-each select="attribute::*">
Attribute:
<xsl:value-of select="name()" />
:
<xsl:value-of select="." />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>