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:\Users\wppcn\source\repos\网易云\网易云\Resourece\SvgImgResource.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")

来获取了

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM