问题标签 [datatemplateselector]

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 投票
3 回答
7293 浏览

wpf - 未为 ContentControl 派生类型调用 WPF DataTemplateSelector.SelectTemplate

我正在尝试构建一个ContentControl-derived 控件(我们称之为它MyContentControl),它将ControlTemplate由一个DataTemplateSelector-derived 类型的实例设置它(我们称之为它MyTemplateSelector)。

当我尝试这样做时:

我希望,当我在这些控件上设置内容时,会为和 调用方法MyTemplateSelector的覆盖。DataTemplateSelector.SelectTemplate()contentControlmyContentControl

实际上,它只为 contentControl 调用。我需要做什么(为什么!)才能使它也起作用myContentControl

(不确定它是否相关,但目前MyContentControl除了DependencyProperties覆盖DefaultStyleKeyProperty.

编辑(将其他帖子中的内容移至原始问题):

这是一个更详细的示例:

  1. 创建 MyContentControl:

    /li>
  2. 创建MyTemplateSelector

    /li>
  3. 添加ContentControlMyContent控制到您的主窗口(例如):

    /li>
  4. InitializeComponent在之后(或在处理程序中)的某处添加此代码Loaded

    /li>

步骤(2)中提到的断点只被命中一次,fo​​r content="ABC"and contentControlelement。

0 投票
1 回答
459 浏览

wpf - WPF 主题和模板选择器

所以我正在经历一种风格(在本例中为 WhistlerBlue.xaml),我希望能够将 TemplateSelectors 与我的数据一起使用。

然而,这似乎是一个谬论,因为它似乎不起作用!我如何(除了 carte-blanch 注释掉有问题的样式, ListBoxItem 样式)使用 DataTemplateSelector 吗?

0 投票
4 回答
13183 浏览

wpf - 从 DataTemplateSelector 显式刷新 DataTemplate?

我将 ContentControl.DataTemplateSelector 设置为我想要的。
我希望根据命令或其他方式调用 ContentControl 以通过 xaml 或代码从选择器中重新选择模板。

谢谢

0 投票
2 回答
27675 浏览

c# - 如何正确引用 XAML 中的类

好的,这是一个超级菜鸟问题,我几乎不好意思问...

我想在我的 XAML 文件中引用一个类。它是一个 DataTemplateSelector,用于为 DataGrid 列选择正确的编辑模板。

无论如何,我已经将该类写入我的代码后面,将本地命名空间添加到 XAML 顶部的顶部,但是当我尝试从 XAML 引用该类时,它告诉我该类在本地命名空间中不存在. 我一定错过了一些非常简单的东西,但我就是无法理解......

这是我的代码。

XAML:

C#:

任何想法我做错了什么?我认为这应该像 1-2-3 一样简单......

谢谢!

0 投票
1 回答
1093 浏览

c# - WPF - 从 DataTemplateSelector 中获取一个 DataGridCell 的值

我将 DataTemplateSelector 与 WPFToolkit DataGrid 一起使用。我想根据同一行上另一个单元格的值选择一个单元格的编辑模板。

DataTemplateSelector 的 SelectTemplate 方法有两个参数:一个是网格行显示的数据项,另一个是网格单元格。

我想知道的是如何从 SelectTemplate 方法中获取另一个单元格的值。但是,我不确定通过访问单元格的属性来获取此信息的正确方法。

任何人都可以帮忙吗?

提前谢谢了。

0 投票
2 回答
1702 浏览

wpf - WPF DataGrid 绑定到数据表

这让我发疯了。我在代码中创建一个 DataGrid,然后将它绑定到一个数据表。这是动态的,每次创建网格时行和列都会不同。

基本上我遍历我的数据表并为每一列创建 DataGrid 列,如下所示:

如您所见,我正在使用自定义数据模板选择器,因此我可以根据单元格的内容以不同的方式呈现单元格。

这是模板选择器

这是我的 stringCell 数据模板

问题是每个单元格都调用了模板选择器(如预期的那样),但我不知道它是哪个单元格,所以我不知道如何在 TextBlock 上设置文本。我很想做这样的事情

但是我无法获得 CellIndex。我该如何做与此类似的事情,我可以设置 Path=Row[CellIndex]

0 投票
2 回答
743 浏览

wpf - .NET4 WPF Datagrid - 响应不同的数据类型

我是一个新手程序员,我一直把它作为一种爱好而不是一种职业。因此,我正在为我工​​作的公司编写一个生成发票的应用程序。我有发票工作,它从我们的供应商那里获取数据,匹配客户、产品和费率等,并生成发票。我现在正在尝试美化它并允许编辑客户和费率详细信息。部分原因是我有许多表保存查找值,例如增值税率、加价值、自定义费率。

我正在用 WPF、C#、.Net 4 编写应用程序。我也在尝试使用 MVVM 模式来分离图层。

我创建了一个名为 EditLookupTableViewModel 的通用 VeiwModel,它处理与数据层和所有其他部分的对话。我的问题是视图。我想创建一个可以处理我在上述类中允许的所有数据类型的单一视图。我坚持的一点是这个。

我想将数据显示为数据库表中当前值的列表,并允许人们编辑这些值或添加新值。各种数据类型都基于通过 Entity Framework 4 访问的 SQL 数据库中的表。这些表并不都具有相同数量或类型的列。

如果我使用 DataGrid 控件将数据显示为列表,如何根据显示的数据类型更改列类型?

我一直在各种网站上搜索,但没有找到适合的任何东西。

我以为我可以使用 DataTemplate,然后使用 DataTemplateSelector,但我看不到为 DataGrid 创建 DataTemplate 的任何方法。

然后我想我会使用 ContentPresenter 但我看不到你会如何选择模板。

理想情况下,我想使用某种 og TemplateSelector,因为我可以从代码中控制模板,因为几个表具有相同的结构,因此为那些相同的表重用模板会很棒。

任何帮助将不胜感激,因为我确信必须有一个比创建多个视图更优雅的解决方案。

谢谢

西蒙

0 投票
5 回答
18056 浏览

c# - WPF:当某个值更改时重新应用 DataTemplateSelector

所以这是我拥有的 XAML:

这是我的 ListTemplateSelector 类:

GroupTemplate 数据模板在其自身内部引用了 ListTemplateSelector,所以这就是我设置的原因。这是我可以组合的唯一递归黑客。但这不是我遇到的问题。

我的问题是,当 IsLeaf 属性更改时,我想从 ItemTemplate 更改为 GroupTemplate。自从它第一次读取属性以来,这是第一次很好地工作。但是一旦这个属性改变,模板选择器就不会被重新应用。现在,我可以使用触发器绑定到值并适当地设置项目模板,但我需要能够为每个项目设置不同的模板,因为它们可能处于不同的状态。

例如,假设我有一个这样的组列表:

第 1 组:IsLeaf = false,因此模板 = GroupTemplate

第 2 组:IsLeaf = true,因此模板 = ItemTemplate

第 3 组:IsLeaf = false,因此模板 = GroupTemplate

并且一旦组 1 的 IsLeaf 属性更改为 true,模板需要自动更改为 ItemTemplate。

编辑:

这是我的临时解决方案。有什么更好的方法吗?

0 投票
1 回答
225 浏览

wpf - 如何在动态网格中应用 DataTemplate?

我有一个网格。网格的列在运行时根据用户的选择自动生成。

如果内容是负数,我需要网格中的单元格为红色。

我创建了一个 DataTemplateSelector。如果单元格为负数,则正确调用 DataTemplateSelector 并返回我的模板。

由于我的列是自动生成的,因此我不能简单地将正确的字段放入模板的绑定中。

如果我做这样的模板,则文本是网格绑定的对象的名称。

如果我这样做:

该单元格是空的,因为 Textblock 似乎覆盖了标准自动生成的单元格。

有没有办法使这项工作?我应该使用另一种方法吗?

0 投票
2 回答
807 浏览

c# - 使用数据模板选择器时 WPF 组合框键索引不起作用

使用数据模板选择器时,我遇到了关于 WPF 组合框的问题。

基本上,WPF 组合框具有标准行为,如果您使用键盘键入该字符,它将直接将您带到从该字符开始的项目。我不知道这个功能的正式名称,暂时称它为“Key Indexing”。

我现在想创建一个以不同方式显示其项目的 ComboBox。我使用 DataTemplateSelector 实现了这一点;

PartyTemplateSelector 是:

除了失去关键索引能力之外,它工作正常。当我在下拉组合框时键入一个键时,它不会将我带到从我键入的字符开始的项目。

谁能帮我这个?

问候。