XamlReader动态使用xaml

时间:2022-03-09 10:19:55

xamlload先在xaml做出一个grid,命名xgrid

<Page
    x:Class="xamlload.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:xamlload"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid x:Name="xgrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Click="button_Click"/>
    </Grid>
</Page>

用和前面写

<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Click="button_Click"/>但是位置不一样的按钮

        private void button_Click(object sender , RoutedEventArgs e)
        {
            string usingXaml = " xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" ";
            string contentXaml = "<Button Content=\"Button\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\"";
            string marginXaml= "Margin=\"10,50,0,0\"/>";
            Button b = XamlReader.Load(contentXaml+usingXaml + marginXaml) as Button;
            xgrid.Children.Add(b);
        }