问题标签 [datagridtemplatecolumn]

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.

0 投票
1 回答
12424 浏览

wpf - WPF DataGrid 单元格字符串格式作为样式或模板

我尝试了几种方法来分解 WPF DataGrid(.NET 4 提供的一种)中单元格的格式:

  • 数据转换器,
  • 样式中的“StringFormat”绑定属性,
  • 数据模板中的“StringFormat”绑定属性。

我将描述我的尝试,因为它可能对其他人有所帮助,我希望有人能给我建议以改进这些解决方案。请注意,我对 WPF 相当陌生...

预期的行为是单元格字符串被格式化为特定的格式,如“1,234,567”以进行显示,但在编辑单元格时应格式化为“1234567”(其默认格式)。当我尝试使用数据转换器时,我没有找到在编辑时使用默认格式的方法,因此我将精力集中在样式和模板上。

使用样式,DataGridTextColumn 的定义如下所示:

该行为正是预期的。但是,由于绑定的原因,我无法将这种样式分解并多次使用。为了解决分解问题,我使用了 DataGridTemplateColumn 和数据模板。这是我的 DataGridTemplateColumn 定义:

和 ControlTemplate 定义:

使用数据模板解决了分解 DataGrid 单元格格式的初始问题,但使用控制模板会带来人体工程学和视觉问题。例如,由控件模板引起的双标签导航(在许多其他地方讨论过),以及编辑文本框的外观(我尝试通过边框粗细、填充和其他属性设置来修复。)

与此问题相关的具体问题是:

  • 可以使用数据转换器来格式化字符串以进行显示并使用默认格式进行编辑吗?
  • 是否可以在仍然能够指定绑定源的同时排除 DataGridTextColumn 样式?
  • 有没有办法使用 DataGridTemplateColumn 但只是让它看起来和感觉像 DataGridTextColumn?
0 投票
1 回答
636 浏览

wpf - 在带有 MVVM 的 WPF 中使用文本框绑定 DataGridTemplateColumn

我有一个绑定到列表 (ListOne) 的 DataGrid。在网格内,我想显示一个额外的文本框,其中包含在另一个类中找到的字段,该类与 ListOne 中使用的类不同。

我之前使用 DataGridTemplateColumn 使用 ComboBox 完成了此操作,问题是我不确定使用 TextBox 时绑定将如何工作?

ListOne 包含绑定并正确显示的代码和描述。我的 SQL 存储过程使用连接返回额外的值,我想将其显示为可编辑字段 ListOne。

有任何想法吗?

0 投票
4 回答
10944 浏览

c# - DataGridTemplateColumn 内的命令绑定

我正在开发一个广泛使用 Prism、MVVM 模式和 MEF 的 Silverlight 应用程序。出于几个原因,我选择遵循视图优先的方法。

在其中一个视图中有一个 DataGrid,该网格的其中一列是 DataGridTemplateColumn,它只有一个 Button。

我想在按钮上定义命令和命令参数。Command 应该是 ViewModel 的 DelegateCommand。CommandParameter 应该是直接来自 dataGrid 的 SelectedItems 列表。

我尝试了几种方法来做到这一点,但 Command 或 CommandParameter 都为空。

它遵循我最初编写的代码:

有人可以建议我最好的方法是什么?

在此先感谢,吉安卢卡。

0 投票
1 回答
5601 浏览

c# - WPF DataGrid如何根据绑定的数据将ColumnType设置为不同的类型?

我有“首选项”数据结构,其中有字符串“值”字段和“类型”字段的枚举。

类型可以是 0-Boolean、1-Integer、2-String ...

根据此类型字段中的值,我想以不同的方式显示“值”单元格复选框、文本框、下拉列表等。因此,为了清楚起见 - 同一列应根据该行中的数据显示不同的单元格..

我想我需要使用 DataGridTemplateColumn 但我从来没有这样做过,如果可能的话想要一些例子。

另外,我可以用 XAML 做什么以及需要在代码中做什么?我想也必须使用值转换器?

0 投票
1 回答
200 浏览

silverlight - 如何在 Silverlight 中使用 Combobox 触发 DataGridevents DataGridBeginningEdit、DataGridCellEditEnding?/ 组合框的 CellTemplate

我想使用 DataGridevents(DataGridBeginningEdit、DataGridCellEditEnding、..etc)来处理和检测更改。据我了解,没有“CellTemplate”,这些都不会被触发。所以我正在尝试使用 TextBlock 创建一个适当的单元格模板,但我想我在 CellEditingTemplate 中用于 Combobox 的绑定不是很简单,因为我使用的是“DisplayMemberPath”..

有一些更简单的例子,但我找不到这种情况。请参阅下面的 Xaml 片段;

谢谢

0 投票
1 回答
1930 浏览

wpf - DataGridTemplateColumn 单元格的 WPF 内容

在 WPF 中,我引用了 DataGridCell 并希望获取其内容。我曾经将该单元格放在 DataGridTextColumn 中,并且可以像这样获取内容:

但这不再有效,因为单元格位于 DataGridTemplateColumn 中,尽管我确实将 TextBlock 指定为该列的 DataTemplate。还有办法解决吗?

编辑以澄清问题。以下代码按预期工作:

但是,如果我使用 TemplateColumn,则代码将不起作用,因为 block 将为空。

有没有办法仍然可以获取单元格内容(在我的情况下是一个字符串)?

0 投票
1 回答
18363 浏览

wpf - DataGridTemplateColumn :在使用 ItemsSource 之前,Items 集合必须为空。

为什么是错误代码:

以下代码是正确的:

但我不能将按钮添加到数据网格

0 投票
1 回答
2628 浏览

wpf - 获取对 DataGridTemplateColumn 内元素的引用

我一直在努力解决这个问题一段时间,似乎无法得到任何答案。我已经模拟了一个简单的 XAML 文件来演示这个问题(我没有提供我真正的 XAML 文件,因为它比这个问题需要的更多)。

这是我的问题:鉴于以下 XAML 文件,如何在我的代码隐藏中获取对驻留在 DataGridTemplateColumn.CellEditingTemplate DataTemplate 中的 selectHeight ComboBox 的引用?我需要参考,以便我可以根据 selectAge ComboBox 中的选择更改 ComboBox 的属性。

我意识到我正在尝试做的可能并不完全是“最佳实践”,但我正在尝试使用遗留代码中给出的内容。

我发现这个 MSDN 页面与我想做的事情有关,但我不知道如何将示例转换为我的场景:http: //msdn.microsoft.com/en-us/library/system.windows.frameworktemplate。查找名称.aspx

任何帮助,将不胜感激!谢谢!

0 投票
4 回答
32492 浏览

wpf - WPF DataGridTemplateColumn 与 ComboBox 绑定(MVVM 模式)

我对下面的 WPF DataGrid+ComboBox 场景很感兴趣。

我有一组看起来像的类;

现在我想要的结果是一个 DataGrid ,它显示了House类型的行列表,并且在其中一列中是一个 ComboBox ,它允许用户更改House.HouseOwner的值。

在这种情况下,网格的 DataContext 是ViewModel.Houses,而对于 ComboBox,我希望 ItemsSource 绑定到 ViewModel.Owners。

这甚至可能吗?我对此很感兴趣......我能做的最好的事情就是正确地绑定 ItemsSource,但是 ComboBox(在 DataGridTemplateColumn 内)没有在每一行中显示 House.HouseOwner 的正确值。

注意:如果我将 ComboBox 从图片中取出并在 DataTemplate 中放置一个 TextBlock,我可以正确查看每一行的值,但是同时获取 ItemsSource 以及在选择中显示正确的值对我不起作用...

在后面的代码中,我已将 Window上的 DataContext 设置为ViewModel,在网格上,将 DataContext 设置为ViewModel.Houses。除了这个组合框之外的所有东西,它都在工作......

我的违规列的 XAML 看起来像;

希望对这个有一些帮助......不过似乎需要一点巫毒教......

0 投票
1 回答
1744 浏览

wpf - 如何以与多绑定字段相同的顺序对 DataGridTemplateColumn(使用 MultiBinding)进行排序

我有一个自定义实体,其中包含 FirstName、LastName 属性(它也有其他属性)。我将此实体绑定到数据网格,它将 FullName (LastName, FirstName) 显示为 DataGridTemplateColumn(使用 MultiBinding 和 StringFormat)。允许用户对数据网格列进行排序,当他们单击 FullName 列时,记录必须按 LastName 然后 FirstName 排序(排序方向将根据点击次数切换)。我想知道在上述场景中是否可以实现所需的排序(多列)?

我尝试使用 SortMemberPath 属性,但我只能指定一列。

我知道如果我将一个名为 FullName 的自定义 ReadOnly 属性添加到我的实体中,事情会起作用,但我只想了解是否可以通过实现 MultiBinding 来实现相同的效果。

谢谢, 潘卡伊