WPF使用后台代码动态创建样式

我的WPF主窗体如下图 ,有5行1列,然后三个按钮,我要实现点击其中一个按钮动态加载控件

<Window x:Class="LQ.MES.BurnSyetem.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:LQ.MES.BurnSyetem"
        mc:Ignorable="d"
        Title="MainWindow" Height="754.444" Width="1409.952" Loaded="Window_Loaded">
    

    <Grid x:Name="GridControl" ShowGridLines="True" RenderTransformOrigin="0.5,0.49">
        <Grid.RowDefinitions>
            <RowDefinition Height="34*">RowDefinition>
            <RowDefinition Height="62*">RowDefinition>
            <RowDefinition Height="138*">RowDefinition>
            <RowDefinition Height="118*">RowDefinition>
            <RowDefinition Height="373*">RowDefinition>

        Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition>ColumnDefinition>
        Grid.ColumnDefinitions>
        <Menu Grid.Row="0" Grid.Column="0" Margin="0,0,0.2,1.4">
            <MenuItem Name="menuConfig" Header="系统参数配置" Click="menuConfig_Click" Height="31"/>
            <MenuItem Name="menuFlashRunner" Header="小黑盒烧录" Click="menuFlashRunner_Click"/>
            <MenuItem Name="FlashRunner" Header="FlashRunner烧录" Click="FlashRunner_Click"/>
        Menu>
    Grid>
Window>


 //主窗体第一行内再加载一个10列的Grid
            Grid msggrid = new Grid();
            msggrid.Name = "Msggrid";
            msggrid.ColumnDefinitions.Add(new ColumnDefinition());
            msggrid.ColumnDefinitions.Add(new ColumnDefinition());
            msggrid.ColumnDefinitions.Add(new ColumnDefinition());
            msggrid.ColumnDefinitions.Add(new ColumnDefinition());
            msggrid.ColumnDefinitions.Add(new ColumnDefinition());
            msggrid.ColumnDefinitions.Add(new ColumnDefinition());
            msggrid.ColumnDefinitions.Add(new ColumnDefinition());
            msggrid.ColumnDefinitions.Add(new ColumnDefinition());
            msggrid.ColumnDefinitions.Add(new ColumnDefinition());
            msggrid.ColumnDefinitions.Add(new ColumnDefinition());
            msggrid.ShowGridLines = true;

            //Button,开始暂停按钮          
            Button btnsta = new Button();
            btnsta.Content = "开始";
            btnsta.Name = "btnSta";
            var btnend = new Button();
            btnend.Content = "结束";
            btnend.Name = "btnend";

            //创建一个StackPanel用于存放Button开始暂停按钮  
            var wrappanel = new StackPanel();
            wrappanel.Orientation = Orientation.Horizontal;
            wrappanel.Children.Add(btnsta);
            wrappanel.Children.Add(btnend);

            //存放开始暂停按钮的GroupBox
            var functiongroup = new GroupBox();
            functiongroup.Header = "运行";
            functiongroup.HorizontalAlignment = HorizontalAlignment.Stretch;
            functiongroup.VerticalAlignment = VerticalAlignment.Stretch;
            functiongroup.BorderBrush = Brushes.Gray;
            functiongroup.Padding = new Thickness(50);
            functiongroup.BorderThickness = new Thickness(3);
            functiongroup.Content = wrappanel;

            //存放基础信息的GroupBox
            var basicinformationgroup = new GroupBox();
            basicinformationgroup.Header = "基础信息";
            basicinformationgroup.HorizontalAlignment = HorizontalAlignment.Stretch;
            basicinformationgroup.BorderBrush = Brushes.Gray;
            basicinformationgroup.Padding = new Thickness(50);
            basicinformationgroup.BorderThickness = new Thickness(3);

            //将msggrid放到主窗体Grid的第一行
            Grid.SetRow(msggrid, 1);
            Grid.SetColumn(msggrid, 0);
            GridControl.Children.Add(msggrid);

            //将存放开始暂停按钮的GroupBox放到msggrid里面
            Grid.SetRow(functiongroup, 0);
            Grid.SetColumn(functiongroup, 0);
            Grid.SetColumnSpan(functiongroup, 2);
            msggrid.Children.Add(functiongroup);

            //将存放基础信息按钮的GroupBox放到msggrid里面
            Grid.SetRow(basicinformationgroup, 1);
            Grid.SetColumn(basicinformationgroup, 3);
            Grid.SetColumnSpan(basicinformationgroup, 7);
            msggrid.Children.Add(basicinformationgroup);

img

但是我把对应GroupBox的Content换成Header他就能正常的显示在Header这个地方

img

我想要达到的结果就是我的Button控件能正常显示到GroupBox的Content

<Window x:Class=“wpf_DataGird_Test.MainWindow”

xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation”

xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml”

xmlns:d=“http://schemas.microsoft.com/expression/blend/2008”

xmlns:mc=“http://schemas.openxmlformats.org/markup-compatibility/2006”

xmlns:local=“clr-namespace:wpf_DataGird_Test”

mc:Ignorable=“d”

Title=“DataGrid Demo1” Height=“450” Width=“800”>

<DataGrid x:Name=“dg” Margin=“5”

AutoGenerateColumns=“False”

LoadingRow=“dg_LoadingRow”

CanUserAddRows=“False”

RowHeaderWidth=“20”>

<DataGrid.ColumnHeaderStyle>

</DataGrid.ColumnHeaderStyle>

<DataGrid.Columns>

<DataGridTextColumn Binding="{Binding Name}" IsReadOnly=“True” Header=“Author Name”

Width=“160” FontFamily=“Georgia” FontSize=“18” FontWeight=“Black” SortDirection=“Descending”/>

</DataGrid.Columns>

在后台代码中添加数据模型:

public class Author

{

public int ID { get; set; }

public string Name { get; set; }

public DateTime DOB { get; set; }

public string BookTitle { get; set; }

public bool IsMVP { get; set; }

public string Email { get; set; }

public string City { get; set; }

public string Country { get; set; }

public int Zip { get; set; }

}

窗口页面的后台代码:

namespace wpf_DataGird_Test

{

///

/// MainWindow.xaml 的交互逻辑

///

public partial class MainWindow : Window

{

public MainWindow()

{

InitializeComponent();

dg.ItemsSource = CreateDemoSource();

}

//

private void dg_LoadingRow(object sender, DataGridRowEventArgs e)

{

e.Row.Header = (e.Row.GetIndex() + 1).ToString();

}

//创建数据源

private List CreateDemoSource()

{

List authors = new List();

authors.Add(new Author()

{

ID = 101,

Name = “Mahesh Chand”,

BookTitle = “Graphics Programming with GDI+”,

DOB = new DateTime(1975, 2, 23),

IsMVP = false

});

authors.Add(new Author()

{

ID = 201,

Name = “Mike Gold”,

BookTitle = “Programming C#”,

DOB = new DateTime(1982, 4, 12),

IsMVP = true

});

authors.Add(new Author()

{

ID = 244,

Name = “Mathew Cochran”,

BookTitle = “LINQ in Vista”,

DOB = new DateTime(1985, 9, 11),

IsMVP = true

});

return authors;

}

}

}

参考链接,希望有帮助哦

WPF后台动态添加TabItem并设置样式_疾风铸境的博客-CSDN博客_wpf tabitem样式 1、前台myWindow.xaml文件中的代码                                                                                                                                                            2、后台myWindow.xaml.cs文 https://blog.csdn.net/xqf222/article/details/9026571?ops_request_misc=&request_id=&biz_id=102&utm_term=WPF%E4%BD%BF%E7%94%A8%E5%90%8E%E5%8F%B0%E4%BB%A3%E7%A0%81%E5%8A%A8%E6%80%81%E5%88%9B%E5%BB%BA%E6%A0%B7%E5%BC%8F&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-0-9026571.pc_ask&spm=1018.2226.3001.4450