WPF ResourceDictionary XAML资源 c#代码 获取与遍历

2021-03-07 10:28

阅读:497

标签:toolbar   click   cat   hda   resources   param   mode   tps   绑定   

原文: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")

来获取了

 

WPF ResourceDictionary XAML资源 c#代码 获取与遍历

标签:toolbar   click   cat   hda   resources   param   mode   tps   绑定   

原文地址:https://www.cnblogs.com/lonelyxmas/p/12833966.html


评论


亲,登录后才可以留言!