首页 > 其他分享 >Wpf DataGrid设置列标题动态绑定实例

Wpf DataGrid设置列标题动态绑定实例

时间:2023-10-11 20:27:19浏览次数:38  
标签:数据源 绑定 标题 DataGrid new Wpf public

在 WPF 中,可以使用 DataGrid 控件来显示和编辑表格式的数据。要设置 DataGrid 列标题的动态绑定,可以使用 DataGrid 的列定义和绑定功能。

以下是一个示例,展示如何使用动态绑定设置 DataGrid 的列标题:

  1. 在 XAML 中定义 DataGrid 控件,并为其定义列:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding PersonsView}">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
                    <DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
                    <!--后台动态设置列表标题-->
                    <DataGridTextColumn Width="120" Binding="{Binding Email}">
                        <!--显示标题需要在DataGridTextColumn.Header中绑定,否则不生效-->
                        <DataGridTextColumn.Header>
                            <!--向上查找数据源,然后绑定数据-->
                            <TextBlock Text ="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window},Path=DataContext.HeaderEmail,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" />
                        </DataGridTextColumn.Header>
                    </DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>
  1. 在代码后台(如 ViewModel 或 Code-behind)中,为 DataGrid 的 ItemsSource 属性设置绑定,并提供数据源:
 public class DataGridViewModel : INotifyPropertyChanged
    {
        public ObservableCollection<Person> Persons { get; set; } = new ObservableCollection<Person>()
        {
            new Person() { Name = "John Doe", Age = 25, Email = "[email protected]" },
            new Person() { Name = "Jane Smith", Age = 30, Email = "[email protected]" },
            // Add more items here...
        };

        public DataGridViewModel()
        {
            this.PersonsView = new CollectionViewSource { Source = this.Persons };
            this.DataContext = this;
            HeaderEmail = "Email";
        }

        public ICollectionView PersonsView { get; set; }

        public event PropertyChangedEventHandler PropertyChanged;

        private string headerEmail;

        public string HeaderEmail
        {
            get { return headerEmail; }
            set
            {
                headerEmail = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(HeaderEmail)));
            }
        }
    }

  这样,DataGrid 的列标题将会根据定义的数据源动态显示。在示例中,通过将 DataGrid 的 ItemsSource 属性绑定到 ViewModel 中的 ObservableCollection,并通过列定义中的 Header 和 Binding 属性来指定列标题和数据源中的字段。

  

标签:数据源,绑定,标题,DataGrid,new,Wpf,public
From: https://www.cnblogs.com/wjygxjz/p/17758070.html

相关文章

  • WPF椭圆弧形弧线控件
    usingSystem;usingSystem.Windows;usingSystem.Windows.Media;usingSystem.Windows.Shapes;namespaceWpfApp2.Controls{publicclassArc:Shape{Size_size=Size.Empty;protectedoverrideGeometryDefiningGeometry{......
  • 界面组件DevExpress WPF v23.1 - 进一步升级数据处理能力
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • dotnet 8 WPF 支持在 RDP 远程桌面状态下启用渲染硬件加速
    本文将和大家介绍在dotnet8里WPF引入的新功能之一,在RDP远程桌面状态下启用渲染硬件加速在dotnet8之前,在用户进行RDP远程桌面时WPF应用将默认关闭硬件渲染加速以获得更好的兼容性。随着系统层的渲染架构的优化,比如在WDDM驱动模型里面,进行远程桌面的硬件加速已经是......
  • 关于Winform中使用DataGridView显示数据时,CheckBox选中状态异常问题
    使用C#创建的Winfrom项目,使用DataGridView显示数据,第一列中使用了DataGridViewCheckBoxColumn实现复选功能。但是当我绑定好数据后测试时,发现勾选和取消勾选的操作表现完全不按照预想的来——连续勾选几行后取消其中部分行的选中状态,再重复选中和取消时,原本不该被选中的checkBox......
  • 虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件, 可以内置到任何WPF应用程序
    虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件,可以内置到任何WPF应用程序虚拟桌宠模拟器一个开源的桌宠软件,可以内置到任何WPF应用程序获取虚拟桌宠模拟器OnSteam(免费)或通过Nuget内置到你的WPF应用程序1.虚拟桌宠模拟器详细介绍虚拟桌宠模拟器是一款桌宠软件,......
  • DataGridView1列宽根据内容自适应
    DataGridView1列宽根据内容自适应在使用DataGridView控件时,要使列宽根据内容自适应,你可以使用DataGridView的AutoResizeColumns方法。这个方法允许你根据列中的内容来自动调整列的宽度。你可以选择调整所有列的宽度或者只调整特定列的宽度。以下是如何使用C#代码来自适应DataGri......
  • wpf翻页
    xaml<ButtonFontSize="16"Margin="10,0"Style="{StaticResourceButtonPrimary}"Content="搜索"Click="SearchClick"Height="35"></Button><StackPanelGrid.Row="2"Horizon......
  • DataGridView绑定DataTable的建议方式
    DataGridView绑定DataTable的建议方式1.将DataTable绑定到BindingSource2.将BindingSource绑定到DataGridView3.DataGridView修改完要从Datatable取值时,同步过去时,BindingSource和DataGridView两个都要执行EndEdit()publicpartialclassForm1:Form{D......
  • 模板中实现数据绑定:
    ①内容绑定:<text>{{表达式}}</text>②属性绑定:<anyv-bind:属性名="表达式"/><any:属性名="表达式"/>③样式绑定:<any:style="{属性名:表达式}":class="{类名:表达式}"/>④事件绑定:<anyv-on:click="处理方法"/><......
  • WPF之自己退出
    二、WPF退出窗口方法 1、强制退出,即使有其他的线程没有结束Environment.Exit(0);2、关闭当前程序,如果有其他线程没有结束,不会关闭System.Windows.Application.Current.Shutdown();3、强制终止当前进程,不仅关闭应用程序,还会关闭所有子进程System.Diagnostics.Process.GetCurr......