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

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

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

 DependencyPropertyDescriptor descriptor = DependencyPropertyDescriptorFromProperty(DataGridColumnWidthProperty, typeof(DataGridColumn));

 descriptorAddValueChanged(dataGridDemoColumns[0],ColumnWidth_Changed);

 

 private void ColumnWidth_Changed(object sender, EventArgs e)

 {

    //值改变后触发

    ConsoleWriteLine(((DataGridColumn)sender)Width);

 }

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

    <DataGrid x:Name="dataGridDemo" GridRow="1"  MaxHeight="600"  MaxWidth="800" CanUserAddRows="False" AutoGenerateColumns="False" RowHeaderWidth="0" >

            <DataGridColumns>

                <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>

            </DataGridColumns>

        </DataGrid>

        <TextBlock GridRow="0" Text="{Binding ElementName=dataGridDemo,Path=Columns[0]Width}"></TextBlock>

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

给您的DataGrid设置一个Name属性 比如说(dataGrid)

那么你可以直接使用该Name属性访问的DataGrid控件

例如:MyWindowMyUserControldataGrid

通过DataGridSelectedItem 可以获取 选中的行

datagridrowbackground不需要获取行后才能设置的,比如你在trigger设置。

<Style TargetType="DataGridRow">

<StyleTriggers>

<Trigger Property="IsMouseOver" Value="True">

<Setter Property="Background" Value="Yellow"/>

</Trigger>

</StyleTriggers>

</Style>

再者,通过SelectionChanged获取datagridrow对象可以这么写(dg为DataGrid名称,t为你选中的实体对象)

private void dg_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

TestDemo t = dgSelectedItem as TestDemo;

if (t != null)

{

DataGridRow dr = (DataGridRow)(dgItemContainerGeneratorContainerFromItem(t));

drBackground = new SolidColorBrush(ColorsYellow);

}

}

那就通过ContentPresente获取呗~不一定非要取到TextBlock嘛

首行你要确定你的控件是在dgListColumns[0]位置

DataRowView DRV = (eEditingElement as SystemWindowsControlsContentPresente)Content as DataRowView;

rowView["ARVDAT"] = ConvertToDateTime(DRVRow[0]ToString());

问题如题。就是我编辑某个单元格然后编辑好了后,再获取编辑单元格所在行的某个列的值。把这2个值合在一起组成一个数组。大体这样子。有人知道怎么获取值么wpf datagrid 如何获取选中单元格所在行的某列的值问题如题。就是我编辑某个单元格然后编辑好了后,再获取编辑单元格所在行的某个列的值。把这2个值合在一起组成一个数

以上就是关于WPF的DataGrid 怎样才能即时获取列宽改变后的宽度全部的内容,包括:WPF的DataGrid 怎样才能即时获取列宽改变后的宽度、WPF 主窗口放了一个用户控件UserMainUserControl里面是一个DataGrid如何在主窗口中得到DataGrid选中的项、请问WPF DataGrid SelectionChanged事件中怎么获取行啊dataGridRow.Background好像只有获取行后才设置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9323956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存