1

我正在尝试在 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>

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

如果有人有任何很棒的建议。干杯。

4

2 回答 2

1

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

源 StackOverflow 答案:如何在 WPF 中创建可折叠面板

但是,如果要使其可定制,请改用HeaderedContentControlclass。MSDN:http: //msdn.microsoft.com/en-us/library/system.windows.controls.headeredcontentcontrol.aspx。一般的想法是在点击标题时修改Content Visibility。

于 2013-05-13T10:24:13.440 回答
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>

这可以作为一个例子。高温高压

于 2013-05-13T10:28:10.577 回答