代码之家  ›  专栏  ›  技术社区  ›  ozczecho

WPF资源字典XSLT

  •  1
  • ozczecho  · 技术社区  · 14 年前

    要在wpf中使用图像,可以定义:

    <ResourceDictionary 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <BitmapImage x:Key="ImageFunTime"
                     UriSource="../Resources/Images/ImageFunTime.png" />
    </
    

    然后在应用程序中的某个地方,您可以:

    var img = (ImageSource)positionsTab.TryFindResource("ImageFunTime");
    

    短暂性脑缺血发作

    1 回复  |  直到 14 年前
        1
  •  0
  •   Dimitre Novatchev    14 年前

    我怎样才能实现同样的目标 嵌入的Xslt文件?

    答案

    1. 微软的XSLT处理器都不支持嵌入式XSLT样式表。XSLT样式表需要一个完整的、仅XSLT的文件。

    2. 在XSLT中使用 <xsl:key> key() 函数,用于通过唯一标识节点的字符串值有效选择节点。

    :

    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     >
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
    
     <xsl:key name="UriSourceByKey"
      match="@UriSource" use="../@x:Key"/>
    
     <xsl:variable name="vImageFunTime"
      select="key('UriSourceByKey', 'ImageFunTime')"/>
    
     <xsl:template match="/">
      <xsl:value-of select="$vImageFunTime"/>
     </xsl:template>
    </xsl:stylesheet>
    

    当应用于此XML文档时 :

    <ResourceDictionary
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
      <BitmapImage x:Key="ImageFunTime"  UriSource="../Resources/Images/ImageFunTime.png" />
    </ResourceDictionary>
    

    产生想要的结果

    ../Resources/Images/ImageFunTime.png