将 XAML 文件的内容嵌入到另一个 XAML 文件中
Embed XAML file's contents in another XAML file
我认为这是非常基本的,但我需要从 elements.xaml 中提取元素并将其作为主网格 "MainGrid" 的子项放入 Template.xaml 中。这可以用 c# 或 XAML 完成,这并不重要。
这里是elements.xaml:
<TextBox Text='' FontSize='25' Grid.Column='0' Grid.Row='1'/>
<TextBox Text='' FontSize='25' Grid.Column='1' Grid.Row='1'/>
<TextBox Text='' FontSize='25' Grid.Column='2' Grid.Row='1'/>
<TextBox Text='' FontSize='25' Grid.Column='3' Grid.Row='1'/>
这里是Template.xaml:
<Grid x:Name="MainGrid" Margin="20" Background="{ThemeResource SystemControlAltMediumLowAcrylicElementMediumBrush}">
<Grid.RowDefinitions>
//Defs go here
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
//Defs go here
</Grid.ColumnDefinitions>
<TextBlock x:Name="Head00" TextWrapping="Wrap" Text="Scene" FontSize="50" Grid.Column="0" Grid.Row="0"/>
<TextBlock x:Name="Head10" Text="Characters" FontSize="50" Grid.Column="1" Grid.Row="0"/>
<TextBlock x:Name="Head20" Text="Page" FontSize="50" Grid.Column="2" Grid.Row="0"/>
<TextBlock x:Name="Head30" Text="Mic Assignment Number" FontSize="50" Grid.Column="3" Grid.Row="0"/>
</Grid>
我希望嵌入的 XAML 位于文本块下方。你们能帮忙吗?
编辑:elements.xaml 位于 applicationdata 文件夹中,位于 C:\Users\USERNAME\AppData\Local\Packages\PACKAGENAME\LocalState
谢谢,
拉詹
尝试使用XamlReader
,它可以加载XAML字符串内容,并将字符串转换为对应的XAML元素。
这是一个简单的例子:
string defaultNamespace = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
string xaml = "<TextBlock xmlns=\"" + defaultNamespace + "\">Hello, world!</TextBlock>";
// xaml content will be:
// <TextBlock xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">Hello, world!</TextBlock>
var textBlock = XamlReader.Load(xaml) as TextBlock;
this.rootGrid.Children.Add(textBlock);
此示例会将 TextBlock 带到 UI。
有关XamlReader
的更多信息,您可以访问XamlReader Class。
我认为这是非常基本的,但我需要从 elements.xaml 中提取元素并将其作为主网格 "MainGrid" 的子项放入 Template.xaml 中。这可以用 c# 或 XAML 完成,这并不重要。
这里是elements.xaml:
<TextBox Text='' FontSize='25' Grid.Column='0' Grid.Row='1'/>
<TextBox Text='' FontSize='25' Grid.Column='1' Grid.Row='1'/>
<TextBox Text='' FontSize='25' Grid.Column='2' Grid.Row='1'/>
<TextBox Text='' FontSize='25' Grid.Column='3' Grid.Row='1'/>
这里是Template.xaml:
<Grid x:Name="MainGrid" Margin="20" Background="{ThemeResource SystemControlAltMediumLowAcrylicElementMediumBrush}">
<Grid.RowDefinitions>
//Defs go here
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
//Defs go here
</Grid.ColumnDefinitions>
<TextBlock x:Name="Head00" TextWrapping="Wrap" Text="Scene" FontSize="50" Grid.Column="0" Grid.Row="0"/>
<TextBlock x:Name="Head10" Text="Characters" FontSize="50" Grid.Column="1" Grid.Row="0"/>
<TextBlock x:Name="Head20" Text="Page" FontSize="50" Grid.Column="2" Grid.Row="0"/>
<TextBlock x:Name="Head30" Text="Mic Assignment Number" FontSize="50" Grid.Column="3" Grid.Row="0"/>
</Grid>
我希望嵌入的 XAML 位于文本块下方。你们能帮忙吗?
编辑:elements.xaml 位于 applicationdata 文件夹中,位于 C:\Users\USERNAME\AppData\Local\Packages\PACKAGENAME\LocalState
谢谢, 拉詹
尝试使用XamlReader
,它可以加载XAML字符串内容,并将字符串转换为对应的XAML元素。
这是一个简单的例子:
string defaultNamespace = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
string xaml = "<TextBlock xmlns=\"" + defaultNamespace + "\">Hello, world!</TextBlock>";
// xaml content will be:
// <TextBlock xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">Hello, world!</TextBlock>
var textBlock = XamlReader.Load(xaml) as TextBlock;
this.rootGrid.Children.Add(textBlock);
此示例会将 TextBlock 带到 UI。
有关XamlReader
的更多信息,您可以访问XamlReader Class。