XamlReader.Load() を使用して XAML 文字列をプログラムで解析/ロードする方法を見つけましたが、ユーザーが ".xaml" ファイルを Silverlight アプリケーションにドラッグ アンド ドロップした場合、そのファイルをどのように解析してXAML ファイルとその内容を文字列として読み取り、XamlReader.Load() メソッドに提供します。
または、リフレクションを使用するより効率的/より良い方法はありますか?
ユーザーが "silverlight for dummies" の 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
}
}
}