2013-02-14 37 views
3

我创建了一个网格在我的WPF应用程序具有4行和列,以显示媒体:WPF加载多个项目并网并显示在新的可用行/列

 <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

所以你想为每个Grid Column/Row添加一个新的WinformsHost? 'VideosGrid'与'ControlsGrid'不同'Grid'? – 2013-02-14 08:26:12

回答

1

你只需要设置Grid.ColumnGrid.Row的管制情况在每个空间。

不过,我注意到您在设置所有网格列/行的大小相同,所以也许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); 
     } 
    } 
} 
+0

谢谢,还,你知道如果WindowsFormsHost只有1个控件好,或者我应该添加所有控件到它的child.controls? – ilansch 2013-02-14 08:46:08

+0

我从来没有使用WindowsFormsHost,所以我不确定对不起 – 2013-02-14 08:48:33

+0

行。我会看看。谢谢 – ilansch 2013-02-14 08:49:52

1

您需要一种方法来确定下一个空的空间,然后你需要设置网格行和列的附加属性:

 Grid.SetRow(control, row); 
     Grid.SetColumn(control, column);