2016-04-25 22 views
1

我的DataGridColumnWidth="*"ScrollViewerHorizontalScrollBarVisibility="Auto"。不幸的是,這種組合看起來並不好。雖然DataGrid在整個窗口寬度上正確跨越,但列很小(MinWidth)。如果我將HorizontalScrollBarVisibility更改爲Disabled它可行,但我失去了所需的ScrollViewer行爲。DataGrid.ColumnWidth =「*」在ScrollViewer中不起作用

最小工作實例:

<Window x:Class="WPF_Sandbox.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WPF_Sandbox" 
     Title="MainWindow" 
     x:Name="ThisControl"> 
    <ScrollViewer HorizontalScrollBarVisibility="Auto"> 
     <DataGrid AutoGenerateColumns="False" ColumnWidth="*"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Column 1" /> 
       <DataGridTextColumn Header="Column 2" /> 
       <DataGridTextColumn Header="Column 3" /> 
       <DataGridTextColumn Header="Column 4" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </ScrollViewer> 
</Window> 

這究竟是爲什麼,以及如何我可以解決它?

+0

嘗試使用2個*,而不是* –

+0

@MahdiFarhani這並不做任何事情。主要問題是滾動查看器 –

+0

,但讓我找到原因。當你刪除ScrollViewer的時候,每件事情都很好。 –

回答

3

您看到的問題是因爲Datagrid在ScrollViewer內部,它具有幾乎無限的擴展空間,因此無法計算寬度。對於這個工作,你可以在DataGrid的寬度結合的ScrollViewer ViewportWidth,因爲這樣:

<DataGrid AutoGenerateColumns="False" ColumnWidth="*" 
Width="{Binding RelativeSource={RelativeSource FindAncestor, 
AncestorType={x:Type ScrollViewer}}, Path=ViewportWidth}">