2010-09-29 3 views
4

Я использую сетку данных WPF для привязки к объекту (т. Е. Не к базе данных). У меня горизонтальное выравнивание на Stretch. В настоящее время у меня это в пределах границы, которая находится внутри сетки.WPF Data Grid - Как скрыть следующий столбец/строку, которая видна?

Однако при запуске приложения DataGrid имеет пустой столбец и сетку. Это означает, что у меня есть 5 столбцов & 5 строк, затем отображается пустой 6-й столбец и строка. Смотрите изображение:

alt text

Вопрос - Как я могу избавиться от этих пустых строк? Обратите внимание, что содержимое DataGrid заполняется программно (т. Е. Не является статичным).

благодаря

EDIT: Я получил дополнительный ряд фиксированного (через CanUserAddRows), но я до сих пор есть проблемы с дополнительной колонкой справа.

Проблема с дополнительным столбцом справа, как представляется, связана с автоматической установкой ширины столбцов. DataGrid на самом деле настроен (см. XAML ниже), так что есть GridSplitter, как раз по праву. Когда я перемещаю GridSplitter, я отмечаю, что столбцы DataGrid не изменяются автоматически. Таким образом, общая проблема заключается в том, что (a) при запуске отображается частичный дополнительный столбец, и (b) после перемещения GridSplitter они также не изменяют размер.

Любые идеи о том, как это сделать?

 <Grid> 

      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 

      <Grid Grid.Column="0"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="*"/> 
       </Grid.RowDefinitions> 
       <Label Content="Summary" Grid.Row="0" HorizontalAlignment="Center" /> 
       <Grid Grid.Row="1"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*"/> 
         <ColumnDefinition Width="*"/> 
         <ColumnDefinition Width="*"/> 
         <ColumnDefinition Width="*"/> 
        </Grid.ColumnDefinitions> 
        <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=AllTime}" Grid.Column="0">All Time</RadioButton> 
        <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Month}" Grid.Column="1">Month</RadioButton> 
        <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Week}" Grid.Column="2">Week</RadioButton> 
        <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Day}" Grid.Column="3">Day</RadioButton> 
       </Grid> 
       <Border Grid.Row="2"> 
        <DataGrid Name="SummaryDataGrid" HorizontalGridLinesBrush="#FF726868" VerticalGridLinesBrush="#FF726868" AlternatingRowBackground="#FFD0F896" CanUserReorderColumns="False" CanUserResizeRows="False" CanUserAddRows="False" CanUserSortColumns="True" CanUserResizeColumns="False" ColumnWidth="Auto" /> 
       </Border> 

      </Grid> 


      <GridSplitter HorizontalAlignment="Right" 
      VerticalAlignment="Stretch" Grid.Column="1" ResizeBehavior="PreviousAndNext" 
      Width="5" Background="#FFBCBCBC"/> 

      <Grid Grid.Column="2" Name="RTChartGrid"> 
       <-- CUT --> 

      </Grid> 


     </Grid> 

ответ

0

Я просто приложил Loaded обработчика к Datagrid и установить все дополнительные столбцы шириной от 0 и сделал их скрытыми.