My problem sounds simple, but unfortunately it's not.
I have a DataGrid with 23 columns, each of them has MinWidth
set to some value, Width = "Auto"
. One of the columns has Width = "*"
, because it's the name of the object and has to fit the content (it does not work now).
When the window is loaded, I'm not able to resize the columns manually. It works only, when I resize all columns automatically before by doubleclicking (like in excel) the columns.
Additionally, when the window is loaded, the MinWidth
property of "Name" does not work, the column is much smaller than 100, and does not fit to the content (the Name has +/- 150 chars).
When I change the Width
to "Auto"
, then I'm able to resize the columns manually, but it's still not behave as expected.
I've tried to set the MinWidth of the grid to a big value - the resizing worked, but as expected, the grid has not been visible at all and the HorizontalScrollbal has not been visible.
I couldn't find any other possible solutions.
Below is the code which I'm using:
<DockPanel LastChildFill="True">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="100" MaxWidth="500"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TreeView Grid.Column="0" />
<DataGrid x:Name="planogramsGrid" Grid.Column="1" Margin="5,0,0,0"
ItemsSource="{Binding CurrentPlanograms, IsAsync=True}"
AutoGenerateColumns="False"
HorizontalScrollBarVisibility="Visible"
CanUserAddRows="False"
filter:DataGridExtensions.IsClearButtonVisible="False"
ColumnHeaderStyle="{StaticResource {ComponentResourceKey
TypeInTargetAssembly={x:Type filter:DataGridHeaderFilterControl},
ResourceId=DataGridHeaderFilterControlStyle}}"
VirtualizingStackPanel.IsVirtualizing="True"
EnableRowVirtualization="True"
EnableColumnVirtualization="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
ScrollViewer.CanContentScroll="True">
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource baseCellStyle}"/>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTemplateColumn Header="" MinWidth="30" MaxWidth="30" filter:DataGridColumnExtensions.DoNotGenerateFilterControl="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="{l:Translate DBKey}" Binding="{Binding DBKey}" MinWidth="55" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Name}" Binding="{Binding Name}" MinWidth="100" Width="*" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate DBStatus}" Binding="{Binding Status}" MinWidth="60" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate DBFamilyKey}" Binding="{Binding DBFamilyKey}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Date1}" Binding="{Binding Date1}" MinWidth="70" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate DatePending}" Binding="{Binding DatePending}" MinWidth="70" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate DBDateEffectiveFrom}" Binding="{Binding DBDateEffectiveFrom}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc5}" Binding="{Binding Desc5}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc10}" Binding="{Binding Desc10}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc7}" Binding="{Binding Desc7}" MinWidth="90" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc9}" Binding="{Binding Desc9}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc11}" Binding="{Binding Desc11}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc22}" Binding="{Binding Desc22}" MinWidth="90" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc31}" Binding="{Binding Desc31}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc32}" Binding="{Binding Desc32}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc12}" Binding="{Binding Desc12}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc14}" Binding="{Binding Desc14}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc39}" Binding="{Binding Desc39}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc42}" Binding="{Binding Desc42}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc43}" Binding="{Binding Desc43}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Desc44}" Binding="{Binding Desc44}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Layout}" Binding="{Binding Layout}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="{l:Translate Height}" Binding="{Binding Height}" MinWidth="80" Width="Auto" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</DockPanel>