ComboBox中的WPF DataGrid

时间:2013-05-13 09:05:40

标签: c# wpf datagrid

我正在尝试在ComboBox中添加DataGrid以尝试在复杂窗口上保存屏幕空间。

这是我的代码:

<ComboBox Grid.Row="0" Grid.Column="0" >
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <DataGrid ItemsSource="{Binding Path=ProductList, Source={StaticResource MainWindowViewModel}}" AutoGenerateColumns="false" Width="500" Height="80">
                <DataGrid.Columns>
                    <DataGridCheckBoxColumn Header="Selected" IsReadOnly="False" />
                    <DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="100" />
                    <DataGridTextColumn Header="Code" Binding="{Binding Code}" Width="100" />
                </DataGrid.Columns>
            </DataGrid>
        </DataTemplate>
    </ComboBox.ItemTemplate>
    <Separator/>
</ComboBox>

分隔符只是破解,因此组合框中将有一个对象,因此它将显示数据网格。 问题在于我无法选择行甚至勾选复选框。

如果有人有任何好的建议。欢呼声。

2 个答案:

答案 0 :(得分:1)

使用Expander类,它具有WPF中可折叠面板的本机功能。 MSDN:http://msdn.microsoft.com/en-us/library/system.windows.controls.expander.aspx

源StackOverflow回答:How to create a collapsible panel in WPF

但是,如果要使其可自定义,请改用HeaderedContentControl类。 MSDN:http://msdn.microsoft.com/en-us/library/system.windows.controls.headeredcontentcontrol.aspx。一般的想法是在单击标题时修改内容可见性。

答案 1 :(得分:0)

实现此目的的一种快速方法是使用已建议的扩展器。将代码编辑为以下内容:

<Expander  Header="{Binding ElementName=dgExpander, Path=SelectedItem.Name}" >
   <DataGrid Name="dgExpander" ItemsSource="{Binding Path=ProductList, Source={StaticResource MainWindowViewModel}}" AutoGenerateColumns="false" Width="500" Height="80">
      <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="100" />
        <DataGridTextColumn Header="Code" Binding="{Binding Code}" Width="100" />
      </DataGrid.Columns>
   </DataGrid>
</Expander>

这可以作为一个例子。 HTH