2

XAML ファイルを Windows Phone 8 プロジェクトに追加しました。そのビルド アクションは「ページ」です。XAML をテキスト文字列としてロードしたい (にフィードするためXamlReader.Load())。どうすればこれを達成できますか?

XAP パッケージで個別のファイルとして入手することはできません。おそらくDLLのどこかにあります。

4

1 に答える 1

3

に設定するPageと、コンパイラは XAML を BAML にコンパイルし、BAML ファイルをリソースとしてアセンブリに追加します。

実行時に元の XAML を BAML リソースから取得したい場合は、BAML を逆シリアル化してから、オブジェクトを XAML にシリアル化する必要があります。

Baml2006Readerを見ることができます。または、メソッドが内部で使用するApplication.LoadComponentものを使用することをお勧めします。XAML コード ビハインドの部分的に生成されたクラスによって呼び出されます。InitializeComponentInitializeComponent

var uri = new Uri("/MyAppName;component/MyXaml.xaml", //Note extension: XAML, not BAML
     UriKind.Relative);
Page rootObject = new Page(); //Assuming XAML root element is Page - it could be anything
Application.LoadComponent(rootObject, uri);

(XAML ファイルのルート要素が であると仮定しますPage)。

Page次に、を使用して XAML 文字列にシリアル化できますXamlWriter

string xaml = XamlWriter.Save(rootObject);

これは名前空間の であり、 ではないXamlWriterことに注意してください。XAML に WPF 型がある場合は、これを使用してエラーを回避する必要があります。System.Windows.MarkupSystem.XamlXamlWriter

于 2012-11-06T23:23:28.603 に答える