在过去的几个小时里我很擅长编码和挣扎,甚至找不到合适的方法。
我想从ResourceDictionary
中的一个DataGrid
Skin.xaml加载所有数据并将其显示在屏幕上,以便用户可以更改内容并将其保存回相同的皮肤或另一个皮肤。
这是来自ResourceDictionary
xaml
<SolidColorBrush x:Key="Button01" Color="#FFABABAB"/>
<SolidColorBrush x:Key="TitleBar" Color="#FFABABAB"/>
<SolidColorBrush x:Key="Background" Color="#FF5B5B5B"/>
我alredy创建了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
。
答案 0 :(得分:3)
如果在您的上下文中加载了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;
}