2017-05-03 55 views
3

我有一个窗口,其中包含一个按钮和一个网格,该窗口中的行和列设置。我试图创建一个按钮,单击时会将另一行添加到网格,然后将用户控件分配给该行。以编程方式将行添加到WPF窗口中的网格中

我发现了一堆方法来在线做datagrids,但没有为网格添加rowdefinition。任何人都可以协助这个代码吗?

WPF至今:

<DockPanel>   
    <Button DockPanel.Dock="Top" Height="22" x:Name="AddRow" Click="AddRow_Click"> 
     <TextBlock Text="Add Skill"/> 
    </Button> 
    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="1"/> 
      <ColumnDefinition Width="1"/> 
      <ColumnDefinition Width="1"/> 
      <ColumnDefinition Width="1"/> 
      <ColumnDefinition Width="1"/> 
      <ColumnDefinition Width="1"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="1"/> 
     </Grid.RowDefinitions> 
    </Grid>   
</DockPanel> 
+0

什么说反对使用DataGrid或ListView使用GridView?你为什么坚持一个网格?请注意,DataGrid和ListView专门用于显示数据/内容/事物的集合,而Grid仅用于布局用户界面元素... – elgonzo

+0

我将为网格中的每一行分配一个用户控件,并且每个用户控制分配将相同,但给用户增加了订阅不同数据馈送的能力。所以不必打开多个窗口来查看多个数据源,而是可以在一个窗口中将它们全部在行中看到。 – mrcavanaugh09

+0

然后使用带有GridView的ListView作为其视图。 ListView将显示一组对象。这些对象是您要定义的类型/类,它们代表一个数据馈送。定义GridView的列,以便每列的DisplayMemberBinding属性绑定到每个数据馈送对象。 – elgonzo

回答

3

这不应该是太困难了。为了简单起见,我将使用代码隐藏进行说明。

<Grid x:Name="TheGrid"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="1"/> 
    </Grid.RowDefinitions> 
</Grid> 

在按钮的点击处理程序:

TheGrid.RowDefinitions.Add(new RowDefinition()); 

然后,只需添加用户控件到网格,并为它指定的行号。

var uc = new MyUserControl(); 
TheGrid.Children.Add(uc); 
Grid.SetRow(uc, TheGrid.RowDefinitions.Count - 1); 
+1

谢谢。这是我正在寻找的。 – mrcavanaugh09

相关问题