WPF的DataGrid 怎样才能即时获取列宽改变后的宽度

 我来答
匿名用户
2016-09-18
展开全部

方法有多种,第一种为列宽添加值改变监控

 DependencyPropertyDescriptor descriptor = DependencyPropertyDescriptor.FromProperty(DataGridColumn.WidthProperty, typeof(DataGridColumn));
 descriptor.AddValueChanged(dataGridDemo.Columns[0],ColumnWidth_Changed);
 
 private void ColumnWidth_Changed(object sender, EventArgs e)
 {
    //值改变后触发
    Console.WriteLine(((DataGridColumn)sender).Width);
 }

你可以使用绑定,下面的例子就是,当拉动第一列的宽度的时候,动态显示在文本上

    <DataGrid x:Name="dataGridDemo" Grid.Row="1"  MaxHeight="600"  MaxWidth="800" CanUserAddRows="False" AutoGenerateColumns="False" RowHeaderWidth="0" >
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Name}" Header="姓名" Width="200"></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding Name}" Header="姓名" Width="200"></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding Name}" Header="姓名" Width="200"></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding Age}" Header="年龄" Width="200"></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding Age}" Header="年龄" Width="200"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
        <TextBlock Grid.Row="0" Text="{Binding ElementName=dataGridDemo,Path=Columns[0].Width}"></TextBlock>

如果你想要值改变,但未还尚未生效,你就要重写元数据

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式