有一种简单的方法将数据网格放入组合框中吗?

时间:2012-01-13 22:35:59

标签: c# wpf xaml

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

3 个答案:

答案 0 :(得分:2)

要回答您的第一个问题,“是否有一个简单的示例说明如何让组合框显示数据网格而不是列表?”很直: - 答案是否定的。

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

一个非常简单的伪装可能看起来像数据网格的样本可能会改变组合框的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)来同步所有项目的列宽,从而产生动态且对齐的布局。

答案 1 :(得分:1)

这肯定是可能的。这是WPF的力量。

This链接说明了如何操作。

答案 2 :(得分:0)

正如我所说的,使用ComboBox对我来说很奇怪。也许你可以这样做:

 <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>

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