在WPF窗口中以编程方式向网格添加行

18

我有一个窗口,里面有一个按钮和一个网格,行和列都已经设好了。我想创建一个按钮,点击它可以向网格添加另一行,并将一个用户控件分配到该行。

我在网上找到了很多方法来处理数据表格,但没有找到添加行定义到网格的方法。有人能提供相关代码吗?

目前所使用的是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>

有什么不适合使用DataGrid或者ListView的GridView吗?为什么你坚持使用Grid?请注意,DataGrid和ListView是专门用于显示数据/内容/物品集合的,而Grid仅仅是用于布局UI元素... - user2819245
1
我将为网格中的每一行分配一个用户控件,每个用户控件分配都将是相同的,但是给予添加它的用户订阅不同数据源的能力。因此,他们可以在一个窗口的行中看到所有的数据源,而不是打开多个窗口来查看多个数据源。 - mrcavanaugh09
然后使用一个GridView作为其视图的ListView。 ListView将显示一组对象。 这些对象是您定义的类型/类,并表示一个数据源。 为GridView定义列,以便每个列的DisplayMemberBinding属性都绑定到每个数据源对象。 - user2819245
2
谢谢。您使用列表视图的想法也起作用了。我选择了下面的答案,因为它遵循了我在其他窗口中使用的相同模式。 - mrcavanaugh09
1个回答

44

这不应该太难。我会使用代码后台来进行说明,以简化问题。

<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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接