• 2018-8-10-WPF-使用-VisualStudio-2017-项目文件


    title author date CreateTime categories
    WPF 使用 VisualStudio 2017 项目文件
    lindexi
    2018-08-10 19:16:53 +0800
    2018-05-31 18:56:11 +0800
    VisualStudio WPF

    本文告诉大家如何在 WPF 访问解决方案的文件

    在 WPF 如果需要访问项目的文件,如在项目文件放一张图片,需要在 xaml 或后台代码读取,这个就是需要用到本文的技术。

    假如在 项目文件 放一张图片,首先新建一个项目,然后随意找一张图片,放在项目上

    注意需要查看图片的属性,如果图片的生成不是 Resources 那么在使用下面的代码还是找不到

    最简单在 xaml 获取项目文件的方式是直接写相对 xaml 的路径,下面的代码写在主界面

            <Image Source="22f0c4ae0afad5e2fd91a6dcff052f2b.jpg"></Image>

    如果放在另一个文件夹的 xaml 相对于图片是下一级,就需要使用下面代码

            <Image Source="../22f0c4ae0afad5e2fd91a6dcff052f2b.jpg"></Image>

    因为很容易移动 xaml 文件所在的文件夹,如果移动了文件夹,那么刚才的路径就需要修改,所以建议写绝对路径。

    绝对路径的写法是 pack://application:,,,/ 后面添加解决方案的路径。

    如在上图,解决方案里的 22f0c4ae0afad5e2fd91a6dcff052f2b.jpg 相对于解决方案是在根目录,所以可以这样写

            <Image Source="pack://application:,,,/22f0c4ae0afad5e2fd91a6dcff052f2b.jpg"></Image>
    

    如果需要跨程序集访问,如我再创建一个项目B,让刚才 A 项目引用 B 项目,在 B 项目放一张图片,然后在 A 项目引用B项目的图片 NearzooRasterCairralJeajismowwir.jpg 就需要在路径写上程序集

    现在需要访问 B 项目的 NearzooRasterCairralJeajismowwir.jpg 就需要使用pack://application:,,,/B;component/NearzooRasterCairralJeajismowwir.jpg,格式就是pack://application:,,,/程序集;component/相对B项目的文件,需要注意右击看文件是不是 Resources 如果不是还是无法找到

            <Image Source="pack://application:,,,/B;component/NearzooRasterCairralJeajismowwir.jpg"></Image>

    需要知道,程序集和项目的名字是可以不相同的,如刚才的 B 项目,实际上程序集和项目名字不相同,请看下图

    所以发现自己找不到资源,可能是项目名字和程序集不相同,需要右击查看程序集

            <Image Source="pack://application:,,,/lindexi;component/NearzooRasterCairralJeajismowwir.jpg"></Image>

    如果引用了相同程序集的不同版本,就需要在路径写上版本,格式是pack://application:,,,/程序集;版本;component/文件相对根目录,具体代码请看下面

           <Image Source="pack://application:,,,/lindexi;v1.0.0.0;component/NearzooRasterCairralJeajismowwir.jpg"></Image>

    在后台访问解决方案的文件和在 xaml 访问的方法差不多,也是需要用到路径,只是调用的方法不相同

                var resourceStream = Application.GetResourceStream(new Uri("pack://application:,,,/lindexi;component/NearzooRasterCairralJeajismowwir.jpg"));
    
                if (resourceStream != null)
                {
                    var stream = resourceStream.Stream;
                }

    参见:Pack URIs in WPF

    win10 uwp 访问解决方案文件

  • 相关阅读:
    在smarty模板中截取指定长度的字符串
    HTMl中Meta标签详解以及meta property=og标签含义
    seo标题关键字描述字数限制Title,keywords,description长度最长多长 ?
    网站title,meta,description如何设置,长度大小多少合适!
    php如何开启gd2扩展
    PHP生成带logo图像二维码的两种方法
    [uart]1.Linux中tty框架与uart框架之间的调用关系剖析
    TCP/IP四层模型和OSI七层模型的概念
    [platform]新旧内核的device设备注册对比
    [platform]linux platform device/driver(三)--Platform Device和Platform_driver注册过程之代码对比
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086251.html
Copyright © 2020-2023  润新知