有没有一种简单的方法可以将数据网格放入组合框中

本文关键字:网格 数据网 数据 组合 一种 方法 简单 有没有 | 更新日期: 2023-09-27 18:20:11

有没有一个简单的例子可以让组合框显示数据网格而不是列表?我一直在尝试SO和谷歌,但不断得到显示如何在数据网格中放置组合框的结果。

有没有一种简单的方法可以将数据网格放入组合框中

要回答您的第一个问题,"有没有一个简单的例子可以让组合框显示数据网格而不是列表?"非常直接:-答案是否定的。

也就是说,有几种不同的方法可以实现看起来像数据网格(即带列的列表)的东西。

一个非常简单的例子,通过伪造看起来像数据网格的东西,可以改变组合框的ItemTemplate

<ComboBox x:Name="cb" ItemsSource="{Binding Persons}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="50" />
                    <ColumnDefinition Width="50" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding Name}" />
                <TextBlock Grid.Column="1" Text="{Binding Age}" />
            </Grid>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

还可以使用SharedSizeGroup(和Grid.IsSharedSizeScope)同步所有项目的列宽,从而形成动态对齐布局。

这肯定是可能的。这是WPF的一个幂。

这个链接解释了如何做到这一点。

正如我所说,使用组合框进行此操作对我来说很奇怪。也许你可以这样做:

 <ToggleButton x:Name="Toggle" Width="200" Height="30" HorizontalAlignment="Center" VerticalAlignment="Top" />
    <Popup IsOpen="{Binding ElementName=Toggle, Path=IsChecked}" PlacementTarget="{Binding ElementName=Toggle}" Placement="Bottom" Width="{Binding ElementName=Toggle, Path=Width}">
        <DataGrid>
            <DataGrid.Columns>
                <DataGridTextColumn Header="Test1" />
                <DataGridTextColumn Header="Test2" />
            </DataGrid.Columns>
        </DataGrid>
    </Popup>

当然,这只是一个例子,它缺少一些功能,比如自动弹出隐藏。但你明白了。