问题标签 [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.
c# - DataType 的 DataTemplate - 如何在特定的 ListBox 中覆盖此 DataTemplate?
我为我的宠物项目中的一些数据类型创建了几个数据模板。这些数据模板真的很酷,因为它们像魔术一样工作,无论何时何地出现在 UI 中,都会神奇地改变数据类型实例的外观。现在我希望能够在一个特定的 ListBox 中更改这些 DataTypes 的 DataTemplate。这是否意味着我必须停止依赖 WPF 自动将数据模板应用于数据类型并将 ax:Key 分配给 DataTemplates,然后使用该键在 UI 中应用 Template/ItemTemplate?
ListBox 包含各种 DataTypes 的项目(都派生自一个公共基类),现在,所有项目都可以在不指定 TemplateSelector 的情况下神奇地工作,因为正确的模板是由 listBox 中项目的实际数据类型选择的。如果我使用 x:Key 来应用 DataTemplates,我是否需要编写一个 TemplateSelector?
我对此并不陌生,只尝试使用 DataTemplates。一瞬间我想,哇,好酷!然后我想在不同的列表框中为相同的数据类型使用不同的数据模板,哎呀,我做不到:-) 请帮忙?
wpf - WPF:从 DataTemplateSelector 类中的 UserControl 中查找资源
我知道有这个线程:How to find a resource in a UserControl from a DataTemplateSelector class in WPF?
问同样的问题。
但是...我对答案不满意!必须有一种方法来获取资源
UserControl 包含 ContentControl/Presenter 声明:
每个派生DataTemplateSelector
类在其SelectedTemplate
Method =>中都有一个参数
类型为 DependencyObject 的容器。
在我的情况下,容器是内容控件。
是否不可能从“contentcontrol”开始爬上可视化树并尝试通过 FindAncestor 获取 UserControl ?
wpf - 我可以在 DataTemplate 中使用 DataTemplateSelector 吗?
我有一个 ItemsControl 使用 StackPanel 来显示项目列表。
我希望为每一行显示一个标签,但标签左侧的内容由 DataTemplateSelector 定义。我不想为 TemplateSelector 生成的每个 DataTemplate 重新定义标签。
这可能吗?
wpf - WPF:不同 GridView 的模板选择器
目前我有一个用户控件,它以相同的布局显示数据集合。因此,可以使用 ObjectA 的集合和 ObjectB 的另一个集合来实例化一个控件。然后我使用 TemplateSelectors 来选择正确的 DataTemplates。
后来我们认为我们应该将 List 设置为 GridView 以在列表本身中显示更多信息。但是,每种类型的对象具有不同的属性,并且列可能具有不同的名称和不同的数量。然后我意识到列等没有在 ItemTemplate 中设置但在 GridView 本身和 ListView 中当然没有自己的模板选择器。
我不知道该怎么做,但我想到了几种方法。
1)有某种我不知道的 TemplateSelector 属性。
2)我可以在 ItemTemplateSelector 上以某种方式设置它,只是不知道如何。
3)我可以动态地做 GridView(可能很困难并且不想避免)。
有什么好的方法可以做到这一点,教程或类似的方法我可以使用吗?
编辑:
由于我对 ListView 及其视图属性有了更多了解,我很确定我可以在 staticResource 中定义 gridview。我仍然喜欢 ViewSelector 或类似的东西。我想这当然不是故意的,因为该项目可能是动态的,而 Collection 不是。
但是我正在考虑可能存在更多类型的视图然后 gridview ( iconview 或其他东西)并且用户可以在它们之间切换它必须以某种方式实现的情况。
我看到的解决方案是使用触发器并将其基于集合中的第一项,但我不太喜欢。
silverlight-4.0 - 数据模板选择器问题
在我的 Silverlight 项目中,我需要使用DataTemplateSelector
. 我在这里找到了一种实现方法(因为它不存在于框架中):http: //www.codeproject.com/KB/silverlight/SLTemplateSelector.aspx
此方法在我的代码的其他地方一直可以正常工作,但这次它不起作用。问题是 TemplateSelector 从未被调用(我什至试图在构造函数中放置一个断点,但它从未被命中)。你能在我的代码中看到问题吗?我使用了调试转换器,可以看到我ListBox
的 'sItemsSource
设置正确。
提前致谢 !
XAML:
模板选择器类:
c# - 根据项目类型和视图选项切换 ListBox ItemTemplate
我目前正在 WPF 中实现一个列表框,它将为其项目提供 2 种替代布局:
到目前为止,我已经使用 aDataTrigger
来切换ItemTemplate
forListBox
并且运行良好:
但是,Runs
列表绑定到的集合也将包含不同类型的对象:
每个对象类型都应该有自己的“平铺”和“图标”模板(总共制作 4 个模板)。根据布尔值ShowRunsAsIcons
和列表项的类型切换这两个属性的最佳方法是什么?
我考虑过使用一对子DataTemplateSelector
类——一个根据项目类型在图块模板之间进行选择,一个根据项目类型在图标模板之间进行选择——但这感觉非常笨拙。我觉得我应该利用 WPF 根据对象类型选择正确模板的能力,但在这种情况下,我不知道如何将它与列表的不同视图选项结合起来。
关于如何做到这一点的任何想法更符合 WPF 的精神?
谢谢。
wpf - 如何将 WPF 控件的内容绑定到其容器的 DataContext,以便可以基于该对象应用 DataTemplateSelector?
我正在尝试在包含两个集合 A 和 B 的 ViewModel 上绑定一个 WPF 窗口。我正在尝试使用 DataTemplates 根据我的 ViewModel 中的标志设置来显示 A 或 B。
为此,我设置了窗口的DataContext = ViewModel
. 但是,当我尝试将 a 绑定ContentControl
到该 DataContext 并对其应用 aDataTemplateSelector
时,item
选择器SelectTemplate(object item, DependencyObject container)
方法的参数始终为 null:
我应该如何绑定以便ContentControl
将 Window 的 ViewModel 传递给它DataTemplateSelector
?
wpf - 通过 DataTemplate 分隔符
我有一个ToolBar
带边界的ItemsSource
,我DataTemplateSelector
用来确定DataTemplate
运行时的(即Button
/ ToggleButton
)。
我想添加一个Separator
DataTemplate
,我该怎么做?
wpf - WPF DataTemplate / DataTemplateSelector -- 2 个不同视图使用的 ViewModel 的最佳方法?
基本上,我有以下情况:
ViewModel: FooViewModel : BaseViewModel
, BarViewModel : BaseViewModel
Views: MainView
, FooView
,BarView
现在我“注入”视图并设置DataContext
使用DataTemplate
and DataTemplateSelector
。显然, myItemsControl
ItemSource
绑定到 a ObservableCollection<BaseViewModel>
,其中它包含(目前) aFooViewModel
和 a的实例BarViewModel
问题是我想介绍一个AlternateFooView
我想使用的FooViewModel
. 我想我会创建另一个DataTemplate
并DataTemplateSelector
返回它,但需要有特殊的逻辑来确定要返回哪个 DataTemplate(我不能只通过哪个 ViewModel 在那里),这意味着我必须有一些BaseViewModel 中的属性或字段的类型。我不知道这是否真的是一个好主意,因为这似乎将一个字段/属性引入到仅用于选择视图的 ViewModel 中。它不会伤害我的单元测试,但包含一个字段只是为了帮助决定选择哪个 UI 视图似乎是一种浪费。我认为它不会破坏 MVVM,但我很好奇是否有人有其他更好的想法?我更不喜欢的替代想法......
想法 #2:
- 将 FooViewModel 转换为 2 个不同 FooViewModel 扩展的基类(即 BaseFooViewModel、FooViewModel、DifferentialFooViewModel)。这似乎很愚蠢,因为 FooViewModel 和 DifferentFooViewModel 除了它们的类类型之外真的没有任何区别。
想法 #3:
- 只需复制 FooViewModel 并将其设为 FooViewModel2(它将与 FooViewModel 完全相同)。这似乎比想法 2 还要糟糕。
示例代码(明显调整):
谢谢!
wpf - WPF DataTemplateSelector 标准更改但模板未重新应用?
我有一个应用于 DataGridTemplateColumn 的 DataTemplateSelector。它正确地为我提供了一个 DataTemplate,它根据我的 DataRow(在其他列中)中的某些信息而有所不同。
到目前为止,一切都很好。
但是,当我现在更改网格中的数据时,这将导致选择器为该列选择不同的 DataTemplate,它不会自动显示这个新的 DataTemplate。
我在 Matthew MacDonald (Apress) 第 564 页的 C# 2008 中的 Pro WPF 中读到,这是已知问题,唯一的解决方法是释放选择器并重新应用它,当我的表中有很多记录时,这将非常慢。
有没有人找到解决这个问题的方法,或者在 .NET4 中有一个新功能可以解决这个问题?
谢谢
马塞尔