我的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);
但是我把对应GroupBox的Content换成Header他就能正常的显示在Header这个地方
我想要达到的结果就是我的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;
}
}
}