XamlObjectWriter.Result で生成したオブジェクトを取得できます。
サンプルでは、テキストと円を表示する Canvas.xaml ファイルを開いてます。XamlObjectWriter.Result は、Canvasオブジェクトになります。
Canvas.xaml
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<TextBlock>これは読み込んだXamlです。</TextBlock>
<Ellipse Canvas.Top="50" Canvas.Left="50" Width="100" Height="100" Stroke="Black" />
</Canvas>
MainWindow.xaml
<Window x:Class="XamlTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="XamlTest" Height="300" Width="300">
<Window.CommandBindings>
<CommandBinding Command="Open" Executed="OpenCommandHandler"/>
</Window.CommandBindings>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Menu Grid.Row="0">
<MenuItem Command="Open" />
</Menu>
<Grid Grid.Row="1" Name="pageGrid" />
</Grid>
</Window>
MainWindow.xaml.cs
using Microsoft.Win32;using System.Windows;
using System.Windows.Input;
using System.Xaml;
namespace XamlTest
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OpenCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == true)
{
XamlXmlReader xxr = new XamlXmlReader(ofd.FileName);
XamlObjectWriter xow = new XamlObjectWriter(xxr.SchemaContext);
while (xxr.Read())
{
xow.WriteNode(xxr);
}
this.pageGrid.Children.Add((UIElement)xow.Result);
}
}
}
}
0 件のコメント:
コメントを投稿