首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dataGrid上的SharedSizeGroup

dataGrid上的SharedSizeGroup
EN

Stack Overflow用户
提问于 2011-07-13 00:27:56
回答 1查看 2.9K关注 0票数 2

我在WPF应用程序中有一个DataGrid和一个网格,我希望它们的列大小相同。我想也许我使用的是SharedSizeGroup,但是似乎DataGrid列没有这个属性(我错了吗?)。我该怎么做呢?

Update1

我按如下方式更改了xaml:

代码语言:javascript
复制
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="20" MaxHeight="20" MinHeight="20" />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Grid >
        <Grid.ColumnDefinitions >
            <ColumnDefinition   Width="{Binding ElementName=titleDataGridColumn, Path=ActualWidth}" />
            <ColumnDefinition   Width="{Binding ElementName=forenameDataGridColumn, Path=ActualWidth}"/>
            <ColumnDefinition   Width="{Binding ElementName=surnameDataGridColumn, Path=ActualWidth}" />
            <ColumnDefinition   Width="{Binding ElementName=dobDataGridColumn, Path=ActualWidth}" />
            </Grid.ColumnDefinitions>
        <Button Content="Clear" HorizontalAlignment="Stretch" Name="searchClearButton" VerticalAlignment="Stretch"   Grid.Column="0" Click="searchClearButton_Click" />
        <TextBox HorizontalAlignment="Stretch"  Name="forenameTextBox" VerticalAlignment="Stretch" Grid.Column="1" />
        <TextBox HorizontalAlignment="Stretch"  Name="surnameTextBox" VerticalAlignment="Stretch" Grid.Column="2" />
        <TextBox HorizontalAlignment="Stretch"  Name="dobTextBox" VerticalAlignment="Stretch" Grid.Column="3" />

    </Grid>

    <DataGrid Grid.Row="1" x:Name="DataDataGrid" HorizontalAlignment="Stretch" AutoGenerateColumns="False" VerticalAlignment="Stretch"  ItemsSource="{Binding}" AlternationCount="1"  IsReadOnly="True" SelectionMode="Single" >
        <DataGrid.Columns>
            <DataGridTextColumn x:Name="titleDataGridColumn" Binding="{Binding Path='Title'}" Header="Title" Width="35*"    />
            <DataGridTextColumn x:Name="forenameDataGridColumn" Binding="{Binding Path='Forename'}" Header="Forename" Width="65*" />
            <DataGridTextColumn x:Name="surenameDataGridColumn" Binding="{Binding Path='Surname'}" Header="Surname" Width="65*"/>
            <DataGridTextColumn x:Name="dobDataGridColumn" Binding="{Binding DOB,StringFormat={}\{0:dd/MM/yyyy\}}"  Header="DOB" Width="70*"/>
        </DataGrid.Columns>
    </DataGrid>

</Grid>

但是现在网格中的姓氏列比datagrid中的相应列要大,并且按钮有点偏左(可以通过在网格列上设置边距来修复),但我不能理解为什么姓氏列的大小不一样?

更新2

这是工作的(问题是surenameDataGridColumn不正确(拼写))

代码语言:javascript
复制
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="20" MaxHeight="20" MinHeight="20" />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Grid >
        <Grid.ColumnDefinitions >
            <ColumnDefinition Width="6px"/>
            <ColumnDefinition   Width="{Binding ElementName=titleDataGridColumn, Path=ActualWidth}" />
            <ColumnDefinition   Width="{Binding ElementName=forenameDataGridColumn, Path=ActualWidth}"/>
            <ColumnDefinition   Width="{Binding ElementName=surnameDataGridColumn, Path=ActualWidth}" />
            <ColumnDefinition   Width="{Binding ElementName=dobDataGridColumn, Path=ActualWidth}" />
        </Grid.ColumnDefinitions>
        <Button Content="Clear" HorizontalAlignment="Stretch" Name="searchClearButton" VerticalAlignment="Stretch"   Grid.Column="1" Click="searchClearButton_Click" />
        <TextBox HorizontalAlignment="Stretch"  Name="forenameTextBox" VerticalAlignment="Stretch" Grid.Column="2" />
        <TextBox HorizontalAlignment="Stretch"  Name="surnameTextBox" VerticalAlignment="Stretch" Grid.Column="3" />
        <TextBox HorizontalAlignment="Stretch"  Name="dobTextBox" VerticalAlignment="Stretch" Grid.Column="4" />
       </Grid>

    <DataGrid Grid.Row="1" x:Name="DataGrid" HorizontalAlignment="Stretch" AutoGenerateColumns="False" VerticalAlignment="Stretch"  ItemsSource="{Binding}" AlternationCount="1"  IsReadOnly="True" >
        <DataGrid.Columns>
            <DataGridTextColumn x:Name="titleDataGridColumn" Binding="{Binding Path='Title'}" Header="Title" Width="35*"    />
            <DataGridTextColumn x:Name="forenameDataGridColumn" Binding="{Binding Path='Forename'}" Header="Forename" Width="65*" />
            <DataGridTextColumn x:Name="surnameDataGridColumn" Binding="{Binding Path='Surname'}" Header="Surname" Width="65*"/>
            <DataGridTextColumn x:Name="dobDataGridColumn" Binding="{Binding DOB,StringFormat={}\{0:dd/MM/yyyy\}}"  Header="DOB" Width="70*"/>
       </DataGrid.Columns>
    </DataGrid>
</Grid>

通过添加新列,我在DataGrid中将button的左侧与Title列的左侧对齐。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-13 01:06:52

使用binding将网格列宽绑定到DataGrid中的列大小。例如:

代码语言:javascript
复制
<dg:DataGridTextColumn x:Name="FirstColumn" Header="Text"/>

<ColumnDefinition Width="{Binding ElementName=FirstColumn, Path=ActualWidth}"/>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6667664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档