使用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")
來獲取了