크기 조정 가능한 열이있는 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”)를 추가했고 데이터 그리드를 필요한만큼만 넓게 만들었 기 때문에 문제가 해결되었습니다. (있는 경우 데이터 그리드의 너비 설정을 제거했습니다.)