2013-02-14 38 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);