问题标签 [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# - 为 Windows Phone 8 C# 上列表框中的特定项目更新 DataTemplate
我无法在运行时更新列表中单个项目的 DataTemplate。详细地说,这是我想要完成的。
我有一个列表框,其中的项目可以有不同的状态(折叠、展开、禁用等),每个都有不同的布局。我正在使用 TemplateSelector 根据我班级的属性选择正确的 DataTemplate ,当我第一次创建列表时效果很好,项目显示正确。但是,当我在运行时更改设置 DataTemplate 的属性时,会调用 NotifyPropertyChanged 并更新列表中的项目信息,但不会更新 DataTemplate。例如:我有一个带有标签 X 的折叠项目,我想展开它。我单击该项目,标签更改为 Y,但 DataTemplate 没有更新。
关于我如何做到这一点的任何想法?除非针对整个列表,否则不能在运行时更新 DataTemplate 吗?
我会很感激任何帮助。
c# - WPF DataGrid CellTemplateSelector 项
我有一个绑定到一组虚拟机的网格。当DataTemplateSelector
我DataGridTemplateColumn
将整个虚拟机用作数据项时,如何将其缩小到特定的属性值(否则我必须为每个虚拟机创建“DataTemplateSelector”或使用接口,两者都太麻烦了)?
Saw将属性绑定到 DataTemplateSelector,但它看起来像一个讨厌的解决方法。
data-binding - 如何在 Windows Phone 8.1 的 DataTemplateSelector 中获取父 DataContext
我在 Window Phone 8.1 应用程序中使用 DataTemplateSelector,并希望为我的 ContentControl 的父 DataContext 添加特定的 DataTemplate。但在 SelectTemplateCore 中 container.Parent 始终为空。你能帮我找到想要的解决方案吗?
EmptyDataTemplateSelector 用于网格内的简单 ContentControl。
c# - DataTempleSelector 未调用 SelectTemplate
我一直在尝试为我的 WPF 列表框获取一个简单的 DataTempleSelector,但我没有任何运气。我在 SelectTemplate 处设置了一个断点,它永远不会被调用。知道我在这里做错了什么吗?
C#:
XAML:
c# - WPF 中的数据模板选择器
我想在具有不同绑定和控件的两个视图之间切换。我可以使用 DataTemplateSelector 做到这一点吗?
c# - 未使用 DataTemplateSelector 更新绑定
我有一个基于 MVVM 的 WPF 应用程序。它有可以设置的参数。参数可以是复选框中的字符串列表或 numupdown 中的双精度。每个设备都有自己的参数,因此这些参数是动态加载的。这就是我使用 DataTemplateSelector 的原因。
Xaml 代码
模板位于资源字典中:
我为 DataTemplateSelector 编写了代码。
当应用程序打开时,所有值都设置得很好。但是当我更新 ParameterValue 时,它不会在视图中更新。(当我在控制台窗口中输出值时,这些值设置得很好(但不是在 GUI 中))。
我应该怎么做才能使这项工作。
编辑
这是它绑定的代码。每个功能都有一个复选框,当您更改一个参数时,所有其他选中的参数都需要更改。
布尔值 SetOthers 是这样他就不会得到堆栈溢出并继续设置自己。
c# - 如何为两个实体使用一个表单
如何为两个实体使用一个表单?样本:
使用相同的形式:
第三个字段是基于更改的实体。Age (int)
或者Contact (string)
是否可以使用 DataTemplateSelector
或Trigger
其他方法来做到这一点?
wpf - 将父视图 DataContext 绑定到 DataTemplate 子视图 DataContext
最近我一直在试验 WPF、Xaml、MVVM 和 DependencyInjection。因此,我正在使用 MVVM 原则创建一个 UI。UI 的某个部分被设计为像向导一样工作,其中并非所有可用选项同时呈现给用户。每个选项部分都是其自己的视图(子视图),其中一个视图(父视图)在 ContentControl 中托管这些子视图。用户设置某些选项并使用按钮从一个部分移动到另一部分。
查看导航
为了在这些视图之间切换,我使用了一个 DataTemplateSelector,每个子视图在我的 Xaml 资源中定义为一个 DataTemplate。
主视图中的内容控制:
示例子视图数据模板:
在父视图和每个子视图上,我创建了一个名为 ViewState(枚举)的依赖属性。它们通过 DataTemplates 相互绑定。在每个视图的代码隐藏中,我根据用户输入更新此 ViewState 属性,并将其传播到父视图,父视图进而触发 DataTemplateSelector。到现在为止还挺好。导航效果很好。
查看模型信息
父视图有一个 ViewModel,它实现了 INotifyPropertyChanged 作为它的 DataContext。我正在尝试使用这个单一的 ViewModel 将属性绑定到父视图和子视图。问题是上面 DataTemplate 片段中的 DataContext 绑定不起作用。(这对我来说很奇怪,因为 ViewState 绑定确实如此。)在多次尝试使其工作之后,子视图上的 DataContext 要么为空,要么为 ViewState 控制变量。
我目前使用 UnityContainer 作为我的依赖注入器。
各种尝试
以下是我尝试过的其他各种失败的事情:
1) 在 UnityContainer 中将 ViewModel 注册为单例,从而在子视图上使用构造函数注入来设置 DataContext。(不起作用,因为 DataTemplate 资源必须有一个无参数构造函数。)
2)在UnityContainer中将ViewModel注册为单例,然后在子View上使用Property Injection来设置DataContext。(不起作用。我认为这是由于在 Xaml 中实例化对象时 UnityContainer 不起作用。)
3) 为每个需要 ViewModel 的子 View 创建子 ViewModel,以显示父 ViewModel 上存在的属性。我以前用它来解决 UnityContainer 的 Xaml 实例化问题。然后,我将 DataTemplate 中的 DataContext 绑定替换为关联的子 ViewModel。(不起作用,因为由于某种原因,我的父视图的 DataContext 被设置为 ViewState 变量,而不是保留我在视图的构造函数中设置的 ViewModel。这反过来意味着我的父 ViewModel 上的子 ViewModel 属性可以'找不到绑定到子View的DataContext。)UserControls的Content和DataContext是一回事吗?设置一个会影响另一个吗?
4) 将 ViewState 依赖属性从 View 移动到 ViewModel,然后设置 ContentControl 的 Content 以绑定到 ViewModel。这违反了 MVVM 原则,但此时我正在尝试任何方法来使其正常工作。(它不起作用,因为当 ViewState 在视图的代码隐藏中发生更改时,ViewModel 不会因为更改而触发。)我没有进一步处理这个问题,因为我不想更深入地违反 MVVM。
结论
在过去的几天里,我在这个网站上找到了大多数这些尝试的解决方案。我没有在 WPF、Xaml 和 MVVM 方面接受过任何正式培训,所以我怀疑我遗漏了一些明显的东西,或者正在尝试做一些不可能的事情。我将继续尝试上述变化并进行研究,直到找到可行的方法,但我想我会利用这里的集体知识来帮助我找到解决方案。
我更喜欢让视图组使用单个 ViewModel 作为它们的 DataContext,这样我就可以将属性绑定到它们的控件。并让视图的导航由 DataTemplateSelector 控制。有没有办法做到这一点,我没有看到?
感谢您的时间!
c# - 在用户控件 WPF 中使用数据模板选择器时引发空引用异常
嗨,我遇到了一个问题,即在我的 xaml 中为使用数据模板选择器的用户控件引发了一个空引用异常,老实说,我不确定为什么。这是下面的代码,任何帮助将不胜感激。
更新它只发生在设计时而不是运行时
数据模板选择器代码:
Xaml(我已经折叠了不同的 DataTemplates 代码,因为 xaml 文件很大)
堆栈跟踪: