2015-07-31 4 views
0

У меня есть два DataGrids внутри дока панелей:WPF DataGridColumn Ширина = «1 *», когда ширина сетки не установлена ​​иногда мешает колонки заполнения

<DataGrid FontSize="16" Margin="5" CellStyle="{StaticResource DataGrid_CellStyle_CentreAlign}" RowHeight="40" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserSortColumns="False" CanUserResizeColumns="False" ItemsSource="{Binding Products}" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Product" Binding="{Binding Product}"/> 
     <DataGridTextColumn Header="Description" Binding="{Binding ProductDescription}" Width="1*"/> 
     <DataGridTextColumn Header="Qty" CellStyle="{StaticResource DataGrid_CellStyle_CentreRightAlign}"> 
       <DataGridTextColumn.Binding> 
         <MultiBinding StringFormat="{}{0:N0} {1}"> 
          <Binding Path="Qty"/> 
          <Binding Path="QtyUOM"/> 
         </MultiBinding> 
       </DataGridTextColumn.Binding> 
      </DataGridTextColumn> 
      <DataGridTextColumn Header="Weight" CellStyle="{StaticResource DataGrid_CellStyle_CentreRightAlign}"> 
       <DataGridTextColumn.Binding> 
         <MultiBinding StringFormat="{}{0:N2} {1}"> 
          <Binding Path="Weight"/> 
          <Binding Path="WeightUOM"/> 
         </MultiBinding> 
       </DataGridTextColumn.Binding> 
      </DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 

И второе:

<DataGrid FontSize="16" Margin="5" HorizontalAlignment="Stretch" CellStyle="{StaticResource DataGrid_CellStyle_CentreAlign}" RowHeight="40" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserSortColumns="False" CanUserResizeColumns="False" ItemsSource="{Binding Pallets}" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Pallet ID" Binding="{Binding PalletId}" /> 
     <DataGridTextColumn Header="Product" Binding="{Binding Product}" Width="1*" /> 

    </DataGrid.Columns> 
</DataGrid> 

Как вы можете см., что они очень похожи и отображаются правильно в дизайнере, но при запуске это результат:

Grids

Как вы можете видеть, размеры столбцов на второй сетке неправильны, столбец описания должен расширяться для заполнения, а столбец поддона должен быть автоматически установлен.

До сих пор все, что я разработал, это то, что связано с шириной DataGrid, так как установка ширины второго столбца DataGrid корректно отображает столбцы (но сама сетка больше не является динамической по размеру).

+1

Кажется, будет установлен прямо ко мне. Может быть, панель, в которой она находится, вызывает проблему? Это может помочь включить xaml панелей. – MichaelN

+0

Я думаю, что ты на что-то. Я удаляю DockPanels и помещаю их в грид. Установка ширины столбцов сетки в * вызвала проблему в обоих датаарифных установках, но после установки определенного значения DataGrids выглядели как ожидалось. – apc

ответ

0

Это происходит, когда у вас есть DataGrid в столбце Grid динамической ширины, когда вы устанавливаете окна WindowState в Normal и устанавливаете ширину и высоту вашего окна в событии Loaded. Установка этого в конструкторе вместо этого устраняет проблему.

Смежные вопросы