簡體   English   中英

Datagrid列的寬度WPF

[英]Width of Datagrid columns WPF

我在WPF數據網格上設置寬度時遇到問題,我有2列,一列用於“名稱”,一列用於“電子郵件”,我都希望至少為100,但是如果“名稱”較長,我希望它占用所需的空間。 現在,兩者最終都只能達到100寬度,而數據網格本身的寬度卻沒有關系。 這是我嘗試的方法:

編輯代碼:

<StackPanel>
    <DataGrid Name="MemberDataGrid" Margin="10,10,10,10" ColumnWidth="*" AutoGenerateColumns="False" ItemsSource="{Binding}" SelectionMode="Single">
        <DataGrid.Columns>
            <DataGridTextColumn MinWidth="30" Width="Auto" Header="Name" Binding="{Binding Path=Name}" />
            <DataGridTextColumn MinWidth="30" Width="*" Header="Email" Binding="{Binding Path=Email}" />
        </DataGrid.Columns>
    </DataGrid>
    <StackPanel Orientation="Horizontal">
        <Button Name="SelectMemeberButton" Click="SelectMemeberButton_Clicked" Margin="10,10,10,10" HorizontalAlignment="Center" Content="Add member"></Button>
        <Button Name="RemoveMemeberButton" Margin="0,10,0,10" HorizontalAlignment="Center" Content="Remove member" Click="RemoveMemeberButton_Clicked"></Button>
    </StackPanel>
</StackPanel>

您的問題中缺少我的東西,我看不到重點。 如果我看着你的窗戶,我會覺得一切正常。

這是我使用的代碼:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        DataContext = new Person[] {
            new Person() { Name = "Paul Leary", Email="paul@contoso.com" },
            new Person() { Name = "Andy Dale", Email="andy@contoso.com" },
            new Person() { Name = "Mike 'The Firestarter' Douglas", Email = "an_incredibly_long_email_address@contoso.com" }
        };

    }
}

這是窗口:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication1"
        Title="MainWindow" Height="350" Width="600">

    <StackPanel Margin="4">
        <DataGrid Name="MemberDataGrid" Margin="10,10,10,10" ColumnWidth="*" AutoGenerateColumns="False" ItemsSource="{Binding}" SelectionMode="Single">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="Col1" MinWidth="100" Width="Auto" Header="Name" Binding="{Binding Path=Name}" />
                <DataGridTextColumn x:Name="Col2" MinWidth="100" Width="*" Header="Email" Binding="{Binding Path=Email}" />
            </DataGrid.Columns>
        </DataGrid>
        <TextBlock Text="{Binding ElementName=Col1, Path=ActualWidth, Mode=OneWay}" Margin="2" />
        <TextBlock Text="{Binding ElementName=Col2, Path=ActualWidth, Mode=OneWay}" Margin="2" />
    </StackPanel>
</Window>

如果運行此代碼,則可以看到第一列的寬度約為164。 同時第二列適合所有剩余空間(大約384)。 那么,此代碼是否按您需要的方式工作?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM