在DataGrid中加载ResourceDictionary组件

本文关键字:ResourceDictionary 组件 加载 DataGrid | 更新日期: 2023-09-27 17:51:11

我对编码很陌生,在过去的几个小时里一直在努力,甚至找不到正确的方法。

我想从DataGrid中的一个ResourceDictionary Skin.xaml加载所有数据,并将其显示在屏幕上,这样用户就可以更改内容并将其保存回同一皮肤或另一皮肤。

这是来自ResourceDictionary xaml 的部分数据

<SolidColorBrush x:Key="Button01" Color="#FFABABAB"/>
<SolidColorBrush x:Key="TitleBar" Color="#FFABABAB"/>
<SolidColorBrush x:Key="Background" Color="#FF5B5B5B"/>

我已经创建了DataGrid,并将DataTable绑定到它以插入数据

this.ResourceToLoad = new DataTable("Resources");
        DataColumn workCol = ResourceToLoad.Columns.Add("Name", typeof(String));
        workCol.AllowDBNull = false;
        workCol.Unique = true;
        this.ResourceToLoad.Columns.Add("Color", typeof(String));
        dgResources.DataContext = this;

我遇到的问题是如何将数据从ResourceDictionary插入到DataTable

在DataGrid中加载ResourceDictionary组件

如果ResourceDictionary在您的上下文中加载,您可以执行以下操作来加载资源:

var buttonBrush = (Brush)FindResource("Button01");

否则,您必须首先加载ResourceDictionary:

ResourceDictionary loadedDictionary;
using (FileStream fs = new FileStream("yourpath/Skin.xaml", FileMode.Open))
    {
       loadedDictionary = (ResourceDictionary)XamlReader.Load(fs);
    }
var buttonBrush = (Brush)loadedDictionary["Button01"];

编辑:使用foreach循环,您可以获得字典条目的关键字和值:

 foreach (DictionaryEntry entry in loadedDictionary)
 {
    var key = entry.Key;
    var resource = entry.Value;
 }
相关文章:
  • 没有找到相关文章