我在WPF应用程序上创建了一个网格,其中包含4行和列以显示媒体:
<Grid Name="ControlsGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="33*" />
<ColumnDefinition Width="33*" />
<ColumnDefinition Width="33*" />
<ColumnDefinition Width="33*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="33*" />
<RowDefinition Height="33*" />
<RowDefinition Height="33*" />
<RowDefinition Height="33*" />
</Grid.RowDefinitions>
</Grid>
从我添加到网格的另一种方法:
WindowsFormsHost formhost = new WindowsFormsHost();
formhost.Child = new System.Windows.Forms.Control();
formhost.Child = control;
ControlsGrid.Children.Add(formhost);
对象正在加载正常,在调试期间我看到集合的大小增加..但是控件正在第一个0,0网格上显示,当添加一个新控件时,它会超过那里的控件。 /> 如何在网格上的空位设置控件?
答案 0 :(得分:1)
您需要一种方法来确定下一个空白区域,然后您需要设置网格行和列附加属性:
Grid.SetRow(control, row);
Grid.SetColumn(control, column);
答案 1 :(得分:1)
您只需将控件的Grid.Column
和Grid.Row
设置为每个空格。
但是我注意到你将所有Grid Columns / Rows设置为相同的大小,所以也许UniformGrid会是一个更好的选择
的Xaml:
<Window x:Class="WpfApplication16.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Name="UI">
<UniformGrid Name="ControlsGrid" Rows="4" Columns="4" />
</Window>
代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
AddWinformControls();
}
private void AddWinformControls()
{
for (int i = 0; i < 12; i++)
{
WindowsFormsHost formhost = new WindowsFormsHost();
formhost.Child = new System.Windows.Forms.Label() { Text = "Hello" };
ControlsGrid.Children.Add(formhost);
}
}
}