[c#] XAML DataGridColumns가 전체 DataGrid를 채우도록하려면 어떻게해야합니까?

크기 조정 가능한 열이있는 XAML (Silverlight 아님)에서 DataGrids를 사용하고 있는데 사용자가 화면 크기를 조정하면 DataGrid가 확장됩니다.

현재 모든 DataGrid 열의 너비가 DataGrid의 너비보다 작 으면 클릭 할 수없고 아무 용도도없는 추가 “열”이 나타납니다.

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



답변

Width="*"열 을 사용하면 사용 가능한 공간이 확장됩니다.

모든 열이 그리드를 나누도록하려면 모든 열에 동일하게 적용하십시오. 나머지 공간을 채우려면 나머지는 “자동”또는 특정 너비로 ​​해당 열에 적용하면됩니다.

Width="0.25*"열이 사용 가능한 너비의 1/4을 차지 하도록하려면 (예를 들어)를 사용할 수도 있습니다 .


답변

있는지 확인 데이터 그리드가있다 Width같은 설정 {Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window,AncestorLevel=1}}.

이와 같이 요소에 대한 Width="*"속성 설정 DataGrid.Columns/DataGridXXXXColumn이 작동해야합니다.


답변

언급했듯이 ColumnWidth="*"는 XAML의 DataGrid에서 완벽하게 잘 작동했습니다.

이 컨텍스트에서 사용했습니다.

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


답변

Width속성을 다음과 같은 비례 너비로 설정합니다.*


답변

내 2 센트->

파티에 매우 늦음

DataGrid-> Column-> Width = “*”는 DataGrid 상위 컨테이너에 고정 너비가있는 경우에만 작동합니다.

예 : 나는 DataGrid에 Grid-> Column에 width = “Auto”를 넣은 다음 Width = “*”를 DataGrid에 넣으면 작동하지 않지만 Grid-> Column Width = “450”을 설정하면 고정됨을 의미합니다.


답변

같은 주제에 대한 또 다른 스핀 :

protected void OnWindowSizeChanged(object sender, SizeChangedEventArgs e)
{
    dataGrid.Width = e.NewSize.Width - (e.NewSize.Width * .1);

    foreach (var column in dataGrid.Columns)
    {
       column.Width = dataGrid.Width / dataGrid.Columns.Count;
    }
 }


답변

HorizontalAlignment = “Center”(기본값은 “Strech”)를 추가했고 데이터 그리드를 필요한만큼만 넓게 만들었 기 때문에 문제가 해결되었습니다. (있는 경우 데이터 그리드의 너비 설정을 제거했습니다.)

여기에 이미지 설명 입력