在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
。
如果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;
}