c# - type - XAML DataGridColumn이 전체 DataGrid를 채우게하려면 어떻게합니까?




wpf table datagrid (6)

XAML (Silverlight 아님)에서 크기를 조정할 수있는 열과 함께 DataGrid를 사용하고 있으며 사용자가 화면의 크기를 조정하면 DataGrid가 확장됩니다.

현재 모든 DataGrid 열의 너비가 DataGrid의 너비보다 작은 경우 추가로 "열"이 표시됩니다.이 열은 클릭 할 수 없으며 용도가 없습니다.

누구든지 나머지 모든 공간을 채우기 위해 한 열을 항상 크기를 조정하는 방법을 알고 있습니까?


C # 해결 방법을 찾으려는 분은 다음과 같이하십시오.

어떤 이유로 AutoGeneratedColumns를 활성화해야하는 경우, 자동 크기를 조정할 모든 너비를 제외하고 모든 열의 너비를 지정하면됩니다 ( 남은 공간 은 사용 되지 않지만 크기는 셀의 내용 ).

예제 (dgShopppingCart는 내 DataGrid 임) :

dgShoppingCart.Columns[0].Visibility = Visibility.Hidden; 
dgShoppingCart.Columns[1].Header = "Qty";
dgShoppingCart.Columns[1].Width = 100;
dgShoppingCart.Columns[2].Header = "Product Name"; /*This will be resized to cell content*/
dgShoppingCart.Columns[3].Header = "Price";
dgShoppingCart.Columns[3].Width = 100;
dgShoppingCart.Columns[4].Visibility = Visibility.Hidden; 

사용자가 Window를 최대화 할 때 DataGrid 크기를 조정해야하므로 해결 방법으로 작동합니다.


DataGrid의 Width {Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window,AncestorLevel=1}} 과 같이 설정되어 있는지 확인하십시오.

이와 같이 DataGrid.Columns/DataGridXXXXColumn 요소에서 Width="*" 특성을 설정해야합니다.


나는 HorizontalAlignment = "Center"(기본값은 "Strech"임)를 추가했으며 필요한만큼만 DataGrid를 만들었 기 때문에 문제가 해결되었습니다. (DataGrid의 너비 설정이 있다면 제거했습니다.)


앞서 언급 한 것처럼 ColumnWidth = "*"는 XAML의 DataGrid에서 완벽하게 작동했습니다.

나는이 맥락에서 그것을 사용했다.

    <DataGrid ItemsSource="{Binding AllFolders, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ColumnWidth="*"/>

AutoGeneratedColumns="True" 이면 나머지 공간을 차지하도록 xaml 격자의 마지막 열을 확장하지 않습니다.


Width 열을 * 와 같은 비례 폭으로 설정합니다.







wpf-controls