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