zoukankan      html  css  js  c++  java
  • WPF ResourceDictionary XAML资源 c#代码 获取与遍历

    使用C#代码来获取XAML资源,除去正常的FindResource。而且是能查询到资源的对象。

    说实话还是很麻烦的。

    比如说我现在有一堆静态资源放在xaml的资源中,我想通过绑定的方式来获取。

    好比是Path的Data数据 ,我放在Xaml资源中。

    我将path作为listbox的ItemTemplate的内容填充,然后将xaml资源中对应的Path的Data的名称作为集合绑定到Listbox。

    必然我是需要编写一个转换器的。

    这个过程,最重要的是转换器中如何获取静态资源。

    代码如下:

     public class ToPathData : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                var b = XamlReader.Load(new FileStream(@"C:Userswppcnsource
    epos网易云网易云ResoureceSvgImgResource.xaml",FileMode.Open)) as ResourceDictionary;
                var data = b[value] as Geometry;
                return data;
                 
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                return null;
            }
        }

    通过XamlReader.Load方法加载本地对应的xaml资源后强制转换成ResourceDictionary。

    最后获取资源。

    如果是想遍历其中的数据则是:

    forearch(var item in b)//内容是object 也就是value
    {
    //通过手段判断是否你想要的
    
    
    }

    如果想通过名称遍历则是

    forearch(var item in b.Keys)//内容是object 也就是value
    {
       var value=b[item];//通过名字直接获取value
    
    
    }

    总体而言还是很麻烦的

    所以最简单的方式还是将xaml资源放入到App.xaml中Application.Resources

    这个样子就可以通过

    App.Current.FindResource("资源Key")

    来获取了

  • 相关阅读:
    ssh免密码登录
    nginx做负载均衡+keepalived(做主备)
    centos之Too many open files问题-修改linux最大文件句柄数
    redis-JedisPoolConfig配置
    Hadoop端口说明
    hadoop 2.5 安装部署
    Java集合框架 10 连问,你有被问过吗?
    Dubbo面试八连问,这些你都能答上来吗?
    面试官:关于Java性能优化,你有什么技巧
    Docker从入门到掉坑(三):容器太多,操作好麻烦
  • 原文地址:https://www.cnblogs.com/T-ARF/p/10934176.html
Copyright © 2011-2022 走看看