programing

XAML DataGridColumn을 DataGrid 전체로 채우려면 어떻게 해야 합니까?

muds 2023. 4. 16. 15:57
반응형

XAML DataGridColumn을 DataGrid 전체로 채우려면 어떻게 해야 합니까?

XAML(Silverlight가 아닌)에서 DataGrids를 크기 조정 가능한 컬럼으로 사용하고 있습니다.사용자가 화면 크기를 조정하면 DataGrid가 확장됩니다.

현재 모든 DataGrid 열의 너비가 DataGrid의 너비보다 작을 경우 클릭할 수 없고 아무런 목적도 없는 추가 "컬럼"이 나타납니다.

한 열의 크기를 항상 나머지 공간을 모두 채우도록 만드는 방법을 아는 사람이 있습니까?

「 」를 사용하고 Width="*"사용 가능한 공간을 확장하기 위해 열이 채워집니다.

모든 열이 그리드를 균등하게 나누도록 하려면 이 값을 모든 열에 적용합니다.나머지 빈칸만 채우려면 해당 열에 적용하고 나머지는 "자동" 또는 특정 너비만 채우십시오.

이 경우에도 하실 수 있습니다.Width="0.25*"(예를 들어 열이 사용 가능한 폭의 1/4을 차지하도록 하는 경우).

에 Data Grid가 있는지 하십시오.Width 설정하다{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window,AncestorLevel=1}}.

그런 식으로 당신의 설정은Width="*"으로 돌리다DataGrid.Columns/DataGridXXXXColumn작동해야 합니다.

바와 같이, 「 」는, 「 」, 「 」, 「 」, 「 。ColumnWidth="*"X의 했습니다.AML(데이터 그리드)의 데이터 그리드

이 문맥에서 사용하였습니다.

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

을 설정합니다.Width *

My 2 Cent ->

파티에 늦다

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

예: DataGrid를 그리드 -> 열에 넣었습니다. 그 너비는 ="DataGrid에서 Auto"를 선택하면 Width="*"가 작동하지 않지만 그리드 -> 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")를 추가했는데 데이터 그리드가 필요한 만큼만 넓어졌기 때문에 문제가 해결되었습니다.(데이터그리드의 [Width]설정이 있는 경우 삭제).

여기에 이미지 설명 입력

xaml이 나머지 합니다.AutoGeneratedColumns="True".

ONE 열의 너비를 임의의 값으로 설정합니다(예: width="*").

C# 회피책을 찾고 있는 경우:

어떤 이유로 "AutoGenerated Columns"를 활성화해야 할 경우 한 가지 방법은 자동 크기를 조정할 열을 제외한 모든 열의 폭을 지정하는 것입니다(나머지 공간은 차지하지 않지만 셀의 내용에 맞게 크기가 조정됩니다).

예(dgShoppingCart는 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; 

사용자가 창을 최대화할 때 DataGrid 크기를 조정해야 했기 때문에 이 방법은 해결 방법으로 사용할 수 있습니다.

winforms(winforms=fill)처럼 열 너비를 데이터그리드 너비에 채우므로 열 너비 종속성 속성을 넣기만 하면 됩니다.

 <DataGrid Grid.Row="0" x:Name="dg1" VerticalAlignment="Top" AutoGenerateColumns="False" Margin="0,0,-6,0" Width="1520" Height="700"  CanUserAddRows="True" 
        
        CanUserDeleteRows="True" ItemsSource="{Binding EmployeeData}" RowDetailsVisibilityMode="Visible" HorizontalGridLinesBrush="DarkBlue" VerticalGridLinesBrush="DarkGreen" ColumnWidth="*" >

언급URL : https://stackoverflow.com/questions/5028894/how-do-i-make-xaml-datagridcolumns-fill-the-entire-datagrid

반응형