问题标签 [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 投票
0 回答
112 浏览

wpf - 在 WPF 中为不同大小的项目使用不同的面板

我想为容器的项目计数使用不同的面板。有没有办法可以做到这一点?

例如,我想使用PanelA少于 5 个项目,PanelB更多。

DataTemplateSelector为此目的实现了这个类,它似乎有效。但是当涉及到绘制 UI 元素时,我没有得到任何结果,而是空白的屏幕。

以下是我的 XAML 代码中的模板之一。第二个是一样的,但是PanelB

在资源之后,我有以下 ContentControl 部分。

谢谢

0 投票
1 回答
43 浏览

windows-phone-8 - 替换 DataTemplate 中的元素

我有一个 LongListSelector 和这样的 ItemTemplate:

我知道如何使用这个TemplateSelector类来更改 ItemTemplate 中的所有内容,具体取决于项目类型。

我的问题是,如何使用模板选择器只更改一个变化的项目,所以我不需要重复所有其他元素。

我尝试使用 a ContentControland ContentPresenterinside deStackPanel但没有成功

0 投票
1 回答
3317 浏览

c# - WPF:更改 ContentControl 的内容时,新的内容对象不会触发加载的事件

问题:

在更改 ContentControl 的内容、应用 DataTemplateSelector 中的 DataTemplate 并完成所有可视布局后,我无法及时连接到时间点,即已加载新内容。

设置:

一个名为“KeyboardHost”的自定义控件,它扩展了ContentControl

ContentControl.Content通过值转换器绑定(使用多重绑定)到 2 个通知属性,该值转换器将 2 个绑定属性组合成“KeyboardCriteria”类型的对象。

'KeyboardCriteria'是一个公共类,但我也尝试将其设为 FrameworkElement、Control 和 UserControl,以便我可以尝试连接到 Initialized、Loaded 等事件。

ContentControl.ContentTemplateSelector是一个自定义选择器类(如下),它根据 ContentControl.Content(“KeyboardCriteria”)返回一个 DataTemplate。

ContentControl.ContentTemplateSelector 的 DataTemplates 是选择器上的属性,在我的 MainView 的资源部分中初始化和分配。

尝试:

我已附加/覆盖以下 ContentControl 事件:

我已附加/覆盖以下“KeyboardCriteria”(定义为 FrameworkElement)事件:

观察:

启动时:

更改绑定条件属性之一时(从而创建新的 KeyboardCriteria 对象):

注意 ContentControl.Content 对象('KeyboardCriteria')上缺少 Loaded 事件。

下一步:

我想我会完全放弃使用 DataTemplateSelector 的想法,并将选择逻辑构建到我的 ContentControl 中,因为这已经是一个 CustomControl。我希望通过手动创建内容(并填充它)我可以避免使用我目前在选择逻辑中使用的 DataTemplates,因为我怀疑这是问题的一部分。

...

代码示例:

主视图模型:

公开“键盘”属性,该属性最初具有非空值。

主视图:

键盘标准值转换器:

仅转换方法,ConvertBack 抛出 NotImplementedException。

逻辑已被简化以删除额外的逻辑来检查值类型、计数等。

键盘数据模板选择器:

感谢您提供的任何见解。

0 投票
1 回答
197 浏览

c# - 为什么 WPF 不会在我的情况下选择正确的 DataTemplate?

我的 ViewModel 中有 4 个实现 IPage 接口(我创建的接口)的类。在我的应用程序的 ViewModel 中,我有一个 IPage 类型的 CurrentPage 属性。

在我的应用程序的 View 层中,我有一个 ContentControl,它的 Content 绑定到 CurrentPage 属性。

因此,当我使用以下代码时,WPF 将找不到正确的 DataTemplate

但是,如果我只将一个 DataTemplate 作为 ContentControl.ContentTemplate ,那么它将正确应用它

如果我然后将这些 DataTemplates 作为资源放回,给它们一个键并创建一个 DataTemplateSelector 并添加

到带有 DataTemplateSelector 的 ControlTemplate,如下所示:

然后选择正确的 DataTemplate。

如果我在这种情况下将 DataTemplates 放在元素资源中,为什么 WPF 不会选择正确的 DataTemplate?

谢谢

注意:使用框架 3.5

编辑:我注意到第二个问题:DataTemplates 中的 DataContext 为空。这是为什么?他们为什么不将 CurrentPage 作为 DataContext?当我直接设置 ContentTemplate 也是这种情况。WPF 似乎不喜欢绑定到接口类型的属性。

编辑 2:如果我在其构造函数中明确设置 OperationListPageV 的 DataContext 并使用 TemplateSelector 一切正常,但为什么我必须使用这些?

编辑 3:完整的 ViewModel 代码,如果有帮助的话:

应用程序视图模型

我要显示 ViewModel 的页面

我要显示的页面的视图层(OperationListPageV)

如果您需要更多代码,请索取。谢谢!

0 投票
1 回答
170 浏览

c# - 根据数据 WP 8.1 不同的列表框项目样式

我有一个由项目填充的列表框。每个项目都包含一个对象,如下所示:

现在我想根据IsOuter值对这些项目应用不同的样式,因为它是一个布尔值。我听说过DataTemplateSelector但无法真正弄清楚它是如何工作的......有人可以告诉我怎么做吗?

0 投票
1 回答
707 浏览

xaml - 如何更改所选 GridView 项的 DataTemplate

我的 GridView 项目有以下数据模板。我想更改 GridView 中选定项的数据模板。

girdView 的数据模板

现在,用户在此 GridView 中选择了任何项目我想更改所选项目的 DataTemplate,如下所示。

我已阅读有关模板选择器的信息。但它会在绑定时选择模板。

有没有办法更改所选项目的数据模板?

0 投票
0 回答
215 浏览

c# - 未为选定项调用嵌套控件中的 DataTemplateSelector

我有以下问题:我创建了一个运行良好的 MultiSelectComboBox:

和代码隐藏:

现在,一切都像魅力一样工作,但是当我想在其中创建一个带有此 MultiSelectComboBox 的新用户控件时,它不会为“SelectedItem”调用 DataTemplateSelector(我们可以在 toggleButton 内部看到)。我看到有几个 ContentPresenter 如果我在我的控件中使用它的 Content-properties 是不同的。有什么错误?如果我将它放在另一个控件中,为什么它的行为会有所不同?

二次控制代码:

和 XAML:

0 投票
1 回答
3478 浏览

c# - WPF 数据模板选择器不起作用

我正在研究 Treeview 控件。项目控件应根据数据结构的值动态显示一组文本框和组合框。执行 ArgumentTypeTemplateSelector 的转换代码。但是,没有显示文本框和组合。请有人帮忙。谢谢你。

树视图 (xaml)

在资源字典(xaml)中

0 投票
1 回答
490 浏览

wpf - WPF:使用 DataTemplateSelector/ContentTemplateSelector 后文本框绑定不起作用

我正在做一个树视图 UI。我使用 DataTemplateSelector 来决定是否根据数据参数的集合动态显示一系列文本框或组合框。

请注意我的代码。ArugumentDetailsCollection 是一个包含 ArgumentDetails 类的可观察集合。DefaultValue 是 ArgumentDetails 类中的字符串属性。请注意该属性不是依赖属性

问题是 DefaultValue 没有绑定到 TextBox。显示 TextBox 时,它包含空字符串。

请注意,如果不使用数据模板选择器,文本框运行良好。请问有人可以建议吗?谢谢你

0 投票
1 回答
194 浏览

wpf - DataTemplateSelector 获取父级 ActualWidth

我正在尝试根据 Pages ActualWidth 将不同的 DataTemplates 设置为 ListBox。本质上,我想显示更多数据来填补空白。

由于它自己定义的项目也是使用什么 DataTemplate 的参数,我认为最好的方法是使用 DataTemplateSelector。

实现这一目标的最佳方法是什么,因为我找不到将 DependencyProperty 添加到 DataTemplateSelector 的方法。