问题标签 [wpfdatagrid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - WPF Datagrid 绑定自定义列标题
我试图弄清楚如何使用 MVVM 模式将 WPF DataGrid 的列标题和主要数据绑定到数据源。我正在寻找的结果如下所示:
(来源:vallelunga.com)
我已经成功地设置了标题的样式,但我不确定如何绑定标题中的值。具体来说,复选框的 IsChecked 属性、组合框的选定索引和文本框的值。
我以前使用一个简单的 DataTable 来填充主网格数据,但我需要更复杂的东西来保存网格数据和每列的值。或者也许我可以将它们完全存储为单独的实体。
那么,有没有人知道我如何解除这种绑定?一个限制是这些列必须是自动生成的,因为在运行之前我不知道它们会是什么。该应用程序只是从 Excel 电子表格中加载数据,并且可能存在任意数量的列。
谢谢,布赖恩
wpf - 如何将 xml 正确绑定到 WPF DataGrid?
我已经寻找并尝试了各种解决方案,但到目前为止,它们都没有解决我的问题。我在 Visual Studio 2010/.NET4 中使用 WPF 中的内置 DataGrid 来显示存储为 XDocument 的 XML 文档中的数据。
我的代码运行良好,并且我已验证 XDocument 存在且正确。但是,DataGrid 不显示任何数据。
XML 看起来像这样(为清楚起见进行了简化):
我的 XAML 看起来像这样:
支持它的 C# 只是将一个新的 XDocument(从 Web 服务下载)分配给 TrackList 属性(它实现了 INotifyPropertyChanged)。没有对其进行进一步处理。
我之前曾尝试使用 Xlinq 绑定到查询结果,但这也不起作用(同样的问题),所以我想我会尝试 XPath 方法以避免编写可能有错误的 Linq 语句,并尝试找到问题.
对于如何让 DataGrid 正确显示,我已经没有什么想法了。我显然缺乏对它应该如何工作的理解,因此我将非常感谢提供的任何帮助。
编辑:值得注意的是,我在输入数据格式方面具有一定的灵活性,因为我自己正在下载原始 XML。我会尝试一些建议,看看我能做什么。
wpf - Window 加载和连接更改后,将 WPF Toolkit DataGrid ComboBox 列绑定到 Linq-to-Sql 集合?
我是 MVVM 的初学者。主窗口使用 WPF Toolkit 中的常用 DataGrid。它有一个视图模型并且仅依赖于 .xaml.cs 文件中的 DataContext_Changed 事件处理程序。主窗口的 DataContext 是 View Model。
我正在尝试将 DataGridComboBoxColumn 的 ItemsSource 属性绑定到视图模型上的 CLR 属性“FieldTypes”。“FieldTypes”是一个 List,它派生自 FieldType 类型的 Linq to Sql 表。DataGrid的ItemsSource来自一个System.Data.Linq.Table,“FieldTypes”来自一个单独的Table,这两个表没有关系。
要将 FieldTypes DataGridComboBoxColumn 绑定到视图模型上的“FieldTypes”属性,我创建了一个 DataTemplate StaticResource 以在 DataGridTemplateColumn 中使用:
事实证明,此 DataTemplate将适用于不在 DataGrid 中的主窗口的子元素,例如在 HeaderedContentControl.ContentTemplate 中,但在 DataGridTemplateColumn.CellTemplate 中不起作用。
如果我尝试将 DataGridComboBoxColumn 绑定到不在 DataGrid 中的常规 ComboBox 的 ComboBox.ItemsSource 属性,
它按预期工作,但不适用于 DataGrid 内的 ComboBox。
我希望在 View Model 的属性上拥有尽可能多的数据绑定,但这看起来也像是一个 StaticResource 的机会。然而,这个 StaticResource 会在窗口加载后发生变化,因为连接字符串直到之后才知道。即使将 ComboBox 列的 ItemsSource 绑定到 StaticResource,我也没有运气,或者 DynamicResource。
是否有某种方法可以使用 MVVM 将 DataGrid ComboBox 列绑定到与 DataGrid 的 ItemsSource 分开的集合?或者有没有办法用一个静态资源来完成这个,即使在窗口加载后 SQL 连接发生了变化?
c# - 从集合绑定到 DataGridComboBoxColumn
尝试绑定到 WPF 中的集合,我得到了以下工作:
XAML:
CS:
可能是不必要的,但这是 Person 类:
但我真正需要的是DataGridComboBoxColumn中的这个。以下是我的修改:
XAML:
C#:
保持不变。
现在的问题是我得到空的组合框列!有什么想法可以让它发挥作用吗?
从长远来看,我需要 2 路绑定,双击名字列会弹出组合框,然后包含集合中所有可能的名字的选项(即 George、Jim 和 Amy)。
感谢任何帮助!
c# - WPF Datagrid 虚拟化和自动高度(不明确)
我正在尝试设计一个带有数据网格、网格拆分器和包含一些消息的底部面板的视图。就像是:
这种布局看起来很完美 - 网格填充了大部分视图,如果需要,我有拆分器来展开底部的文本框。问题是 Datagrid 变得非常大,我需要启用虚拟化。这只有在我相信网格的容器有明确的高度时才有效?
有没有办法获得我想要的布局(网格填充所有可用空间)但也启用了虚拟化?
c# - WPF中的Datagrid(可编辑问题,访问问题)
我创建了一个Datagrid,如图--> http://img682.imageshack.us/img682/5109/datagrid.png
用户应该在哪里输入数据。在其中一列中,我添加了 Combobox。现在,Datagrid 不允许我在单元格中输入数据。IsReadOnly="False" 也不起作用,它给出了一些“EditMode 异常”。所以,我所做的是,我创建了文本块,并在其中创建了组合框和文本框,如下所示:
使用这个用户可以在单元格中添加文本,但我自己对我的这种方法不满意:(。使用这个,我想我将无法访问输入的内容,用于其他用途,比如以某种方式保存数据结构或 DB ......当我使用此代码 { cmb_act_mf .Items.Add(txt_box.Text); } ...它也不起作用..................如何使Datagrid可编辑?与组合框合二为一它的列,这样它的列表/内容可以通过按钮单击的文本框添加。我可以轻松地访问单元格内容(用户输入的位置)以存储在 DS/DB 中.....Datagrid 是正确的选择吗?请帮忙。
提前非常感谢。感谢任何帮助,代码片段将是一种祝福。谢谢。
c# - 如何从数据网格中删除一行
我从 CollectionViewSource 填充 DataGrid。每行都有一个删除按钮。在删除时,我正在从数据库中删除一行。我的问题是 DataGrids 的 UI 没有更新。如何从 DataGrid 中清除已删除的行?
请问有什么建议吗?
c# - 取消选择 RowDetailsTemplate 后调整 Datagrid 高度
我正在使用 RowDetailsTemplate 显示一行的嵌套数据网格。现在,当我选择一行来显示这个嵌套的数据网格时,数据网格的高度会扩大。但是当取消选择该行时,它不会降低其高度。
行详细信息折叠后,有没有办法将数据网格调整为其原始高度?
是否可以以声明方式进行?
wpf - ObservableCollection 数据网格
我将 ObservableCollection 绑定到 dataGrid itemssource。
只有当我们添加、删除、删除时,才会调用可观察集合的 collectionChangedEvent。但是当我们更新记录时不会触发。
如何也触发更新事件?
wpf - 确定谁在 WPF 窗口中具有焦点
我们正在使用 WPF 并有一个从 DockingLibrary 派生的窗口。此窗口有一个网格,其中包含多个项目,其中一个是 WPF 数据网格。我们正在使用 MV-VM 模式。创建并显示此窗口时,不会选择此数据网格中的任何行。我们可以通过执行以下操作将行设置为突出显示:
这会导致数据网格中的第一行显示为突出显示。但是,并非总是存在其中之一,这一行不是选定的,也没有焦点。我尝试将 IsSelected 和 Focus 设置在这一行上,如下所示:
我是否要解决这一切都错了,还有其他方法可以选择数据网格中的第一行并将焦点设置在它上面吗?通常,当创建数据网格时,在用户鼠标单击所需行之前不会选择任何行。
任何想法将不胜感激。
谢谢!