• WPF媒体资源和图片资源寻址方式的杂谈


    WPF提供一个封装和存取资源(resource)的机制,我们可将资源建立在应用程序的不同范围上。WPF中,资源定义的位置决定了该资源的可用范围。资源可以定义在如下范围中:

    (1)控件级:此时,资源只能套用在这个Object控件,或套用至该控件的子控件。

    (2)文件级:如果将资源定义在Window或Page层级的XAML档中,那么可以套用到这个文件中的所有物件。

    (3)应用程序级:如果我们将资源定义在App.xaml 中,那么,就可以将资源套用到应用程序内的任何地方。

    (4)字典级:当我们把资源封装成一个资源字典, 定义到一个ResourceDictionary的XAML文件时,就可以在另一个应用程序中重复使用。

    资源的查询方式

    Static Resource的查询

    (1)查找使用该资源的元素的Resource字典;

    (2)顺着逻辑树向上查找父元素的资源字典,直到根节点;

    (3)查找Application资源;

    (4)不支持向前引用,即:不能引用在引用点之后才定义的资源。

    Dynamic Resource的查询

    (1)查找使用该资源的元素的Resource字典;如果元素定义了一个Style 属性,将查找Style中的资源字典;如果元素定义了一个Template属性,将查找FrameworkTemplate中的资源字典。

    (2)顺逻辑树向上查找父元素的资源字典,直到根节点;

    (3)查找Application资源;

    (4)查找当前激活状态下的Theme资源字典;

    (5)查找系统资源。

    如上所述,可是在使用的时候,碰到媒体资源文件(视频,音乐),总就不那么好使了,规则如下:

    文件编译方式

    资源和使用者是否同工程下

    写法

    是否可用

    Resource

    Source="/MediaPlay;component/media/test.png"

    图片可用,媒体文

    件不可用

    Resource

    Source="pack://application:,,,/MediaPlay;component/media/test.png"

    图片可用,媒体文

    件不可用

    内容,复制

    Source="/media/aaa.png

    图片适用,媒体不适用

    内容,复制

    绝对路径

    图片媒体均适用

    综上:

             当使用媒体资源时,应当使用绝对路径,如有其他方式,请留言。谢谢。

  • 相关阅读:
    开门(open_door_pick_demo.py)的学习教程(十一)
    Bert源码解读(二)
    Transformer和Bert 的学习(一)
    Android笔记
    JSP 第八周课后作业
    JSPd第七周课后作业 2021/04/14
    JSP第六次课后作业 2021/04/07
    JSP第五次课后作业 2021/03/31
    JSP第四次课后作业 2021/03/24
    JSP第二次课后作业 2021/03/10
  • 原文地址:https://www.cnblogs.com/shanranlei/p/3635183.html
Copyright © 2020-2023  润新知