我发现了如何使用 XamlReader.Load() 以编程方式解析/加载 XAML 字符串,但是如果我让用户将“.xaml”文件拖放到我的 Silverlight 应用程序中,我将如何将该文件解析为一个 XAML 文件并将内容作为字符串读取以提供给 XamlReader.Load() 方法。
或者有没有通过使用反射更有效/更好的方法?
我想允许用户使用“silverlight for dummy”silverlight 设计师(在合理范围内)来设计一个简单的控件。(即标签和文本框)。然后将其保存或导出为 XAML 文件(或者我可以简单地让他们将其保存为 TXT 文件?)然后他们将此文件放入我的 Silverlight 应用程序中,并将文本解析为 XamlReader.Load() ,然后我可以将我新以编程方式创建的对象添加到列表框中。
我有拖放文件和加载 XAML 字符串的逻辑,但是获取“.xaml”文件内容的中间点是我自己困惑的地方......
编辑
@nicholas,这正是我所选择的。我不知道昨天发生了什么,但我想我只是有一个严重的“大脑放屁”。这就是我最终的结果:(仍然有一些清理和重构,但这是为了测试)
IDataObject data = e.Data;
if (data.GetDataPresent(DataFormats.FileDrop))
{
FileInfo[] files = data.GetData(DataFormats.FileDrop) as FileInfo[];
if (files.Length > 1)
{
//TODO
}
else
{
FileInfo file = files[0];
extension = file.Extension;
string xaml = string.Empty;
using (Stream stream = file.OpenRead())
{
xaml = StreamUtils.StreamToString(stream);
}
if (!xaml.IsEmpty())
{
try
{
myListBox.Items.Add(XamlReader.Load(xaml);
}
catch (Exception ex)
{
//TODO
}
}
}