I have a problem with a DataGrid in my UserConrol inside a ScrollViewer.
MainWindow has a ScrollViewer and a ContentControl in it to present multiple views (UserControls):
<Border Grid.Column="2" Grid.Row="2" Margin="0, 1, 1, 0" Style="{StaticResource StackPanelBorder}">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<ContentControl Content="{Binding CurrentView}"/>
</ScrollViewer>
</Border>
UserControl (full structure (simplified)):
<Grid>
<Grid>
<Grid>
<Border BorderBrush="Black" BorderThickness="1">
<DataGrid HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="auto" AutoGenerateColumns="False" ItemsSource="{Binding ActiveErrors}" CanUserResizeColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Index" Binding="{Binding Key}"></DataGridTextColumn>
<DataGridTextColumn Header="Error code" Binding="{Binding Value.errorCode}"></DataGridTextColumn>
<DataGridTextColumn Header="Occurences" Binding="{Binding Value.occurence}"></DataGridTextColumn>
<DataGridTextColumn Header="Timestamp" Binding="{Binding Value.timestamp}"></DataGridTextColumn>
<DataGridTextColumn Width="*" MinWidth="200" Header="Error message" Binding="{Binding Value.description}"></DataGridTextColumn>
<DataGridTextColumn Header="Param" Binding="{Binding Value.parameter}"></DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="FontWeight" Value="Medium"/>
</Style>
</DataGrid.CellStyle>
</DataGrid>
</Border>
</Grid>
</Grid>
</Grid>
I need my columns being able to auto resize and column Error message to fill all the available space. And all this inside ScrollViewer, which is necessary for this and many other views (UserControls), so I can't get rid of it.
Without ScrollViewer in MainWindow everything works perfect (column Error message fills all the available space, is able to resize and GridView has no empty last column):
without ScrollViewer 1
without ScrollViewer 2
Solution solution 1 (setting GridView.HorizontalScrollBarVisibility="Disabled") doesn't work (because the entire UserControl is inside a ScrollViewer I guess)
Solution solution 2 also doesn't work as I want - DataGrid becomes able to increase its width but not to decrease, so Column Error message fills all the available space, but only if the window is stretching out.
Help please, its my graduate work.
I tried solution 3 binding DataGrid width to UserControl width. It doesn't work and causes massive lags as well as binding DataGrid width to some other parent controls like border widths.