问题标签 [datatemplate]

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 回答
5301 浏览

wpf - WPF - TextBlock 中超链接的 DataTemplate/Value 转换器

我有一个 ListBox 显示人员姓名、电子邮件、部门等的列表。有一个 DataTemplate 有几个 TextBlocks 来显示每个属性。其中一个 TextBlocks 包装了一个超链接以显示电子邮件地址,如下所示:

这很好用,但如果此人没有电子邮件地址,则 TextBlock 不会自动折叠。所以我写了一个值转换器并以这样的风格使用(简化):

这是使用 ValueConverter 的样式:

我将调用转换器的样式添加到 TextBlock:

在此更改之后,电子邮件地址不再显示 - 在值转换器中,TextBlock 的文本始终为空并返回 Visibility.Collapsed。这就像它在加载超链接之前评估 TextBlock 的文本或其他东西......

请帮我解决这个问题。

谢谢!

0 投票
2 回答
1341 浏览

silverlight - 在 Blend 中针对 CLR 对象的 Silverlight 数据绑定

我喜欢 Blend 中的功能,您可以在其中设置与 CLR 对象的数据绑定,并设计您的 Silverlight 控件/页面。我的问题是围绕创建将用作 DataTemplate 的用户控件。在 Blend 中一切都很好,但仅在设计时。问题是,当我在 Blend 中编辑控件时,我将一个文本框绑定到 CLR 对象的属性,它给了我这个:

但是,当我准备好运行应用程序并在 DataTemplate 中使用该用户控件来表示列表框时,我需要它看起来像这样:

如何在 Belnd 中使用漂亮的绑定进行设计,而在准备运行项目时不必触摸/搜索和替换所有这些绑定?我正在寻找一种既适用于设计时又适用于运行时的方法。

谢谢,

0 投票
1 回答
563 浏览

wpf - NullReferenceException 从 DataTemplate 中的控件调用 RegisterName()

我创建了一个自定义 WPF 控件,它在动态创建的对象上执行一些动画。我使用 SetTargetName() 设置动画目标。(我知道 SetTarget(),但我需要支持没有 SP1 的 .NET 3.5。)显然在此之前我需要使用 RegisterName() 注册对象名称。当我的控件作为对象正常放置在窗口或页面中时,一切正常。

但是,当我将控件添加到 DataTemplate 时,我在调用 RegisterName() 时收到 NullReferenceException。

堆栈跟踪的顶部看起来像这样

在 System.Windows.TemplateNameScope.System.Windows.Markup.INameScope.RegisterName(字符串名称,对象 scopedElement)
在 System.Windows.FrameworkElement.RegisterName(字符串名称,对象 scopedElement)

我传递给 RegisterName 的两个参数都不为空,我调用它的对象也不为空。所以其他东西在内部必须为空,我不知道该怎么做。任何地方都没有关于 TemplateNameScope 的信息。

任何指针都受到高度赞赏。

0 投票
5 回答
19290 浏览

wpf - WPF 内存使用情况

应用:

  • WPF 应用程序由顶部的文本框和下方的列表框组成
  • 用户在TextBox中输入字符串查找员工,搜索结果显示在ListBox中
  • ListBox 使用 DataTemplates 来显示元素(显示员工姓名、部门、​​电话和缩略图。)

执行:

  • 在应用程序启动时,我查询数据库并检索要显示在 ListBox 中的所有员工和相关信息。这一直保存在内存中。
  • 应用程序启动后,所有可搜索的数据都在内存中,搜索几乎是即时的。所有搜索都在内存中的数据上执行。
  • 搜索结果使用 DataTemplates 显示在 ListBox 中。缩略图、姓名、电话、部门等显示在每个 ListBox 项中。

问题:

  • 启动时内存使用量约为 200MB。
  • 随着列表框中的数据发生变化,无论是通过新搜索还是简单地向下滚动列表框,内存消耗都会增加。
  • 当用户缓慢向下滚动列表框时,内存增加得更快。当您上下滚动时,内存迅速达到 1GB。

没有手动创建控件的代码 - 一切都是通过数据绑定完成的。

为什么我会看到这种行为?我能做些什么来修复它?请帮忙!

更新:我发现问题不是内存泄漏。这里的问题是列表框正在创建对象以显示员工的图像,并且在列表框项离开窗口后没有为垃圾收集器释放。CleanUpVirtualizedItem 事件如我所料发生,但内存仍未释放。有任何想法吗?

0 投票
1 回答
7019 浏览

wpf - 使用 MEF 导入 WPF DataTemplate?

我将 MEF 视为一个可扩展性框架,我几乎被卖掉了,除了一点:

假设我想同时导入 ViewModel 和 View 来显示它。我认为“正确”的做法是让 MEF 部分导出 ViewModel 类和显示 ViewModel 的 DataTemplate。例如,假设您正在构建一个类似 Visio 的应用程序,并且您想要导入一个形状库。每个形状都需要一个在 Xaml 中定义的 View 和一个包装一些底层 Model 对象的 ViewModel。

这可能吗?DataTemplate 的 Import 合同是什么样的?如何让 WPF 知道导入的 DataTemplate?

0 投票
2 回答
752 浏览

wpf - 枚举 ListBoxItem 的子元素

实际的视觉效果由 DataTemplate 决定。在运行时,如何遍历 ListBoxItem 的所有可视元素?

0 投票
1 回答
1377 浏览

wpf - WPF - DataTemplate 中 MenuItem 中的命令

我有一个包含图像的 DataTemplate。我在图像中添加了一个带有 MenuItem 的 ContextMenu。我与 MenuItem 关联了一个命令。然后我使用 DataTemplate 处理视图中的命令。

在 CanExecute 处理程序中,我有 e.CanExecute = true。但是 Executed 处理程序永远不会被执行。如果我删除了 MenuItem 的命令分配,当我右键单击图像时,菜单会正确显示。

我究竟做错了什么?

谢谢!

0 投票
6 回答
14422 浏览

wpf - WPF:如何将鼠标事件附加到视图模型?

我第一次尝试使用 MVVM 模式。所以我有一个ItemsControl填充了我的视图模型对象,使用DataTemplate's;显示。DataTemplate对象是用Thumb和对象表示的“节点”和“边缘” Polyline,我希望能够检测到点击和拖动ItemsControl以移动节点和边缘。

两个问题:

  • 如何将鼠标事件处理程序附加到Polyline' 和Thumb' 以由小视图模型处理?(我可以将Thumb.DragDelta处理程序附加到ItemsControle.OriginalSource指向Thumb,但是如何获取相应的视图模型对象?)
  • 如何将鼠标事件处理程序附加到ItemsControl以检测鼠标单击和拖动空白空间?(答案如下)

注意:我知道如果它直接处理 View 的事件,它可能不被认为是合适的 ViewModel。但重要的一点是,我需要处理鼠标事件,我不知道如何附加它们。

0 投票
1 回答
1321 浏览

wpf - 设计器拒绝 DataTemplate.DataType

我正在尝试将一些 WPF 安装到我当前的 Windows 窗体应用程序中。当我使用这个简单的用户控件时,该控件的设计器不会重新加载。

这只发生在此应用程序中。如果我创建一个干净的 Windows 窗体项目,添加这些文件,设计器工作正常。

我已经尝试重新加载 Visual Studio,并清理/重建应用程序。

有任何想法吗?(这些用于 ListBox 中的项目,因此 x:Key 不是一个选项。)

PS我如何摆脱代码清单中所有那些尾随的空白行?

细节:

我的类.cs

MyUserControl.xaml

MyUserControl.xaml.cs

0 投票
3 回答
16723 浏览

wpf - 在 DataTemplate 中为 MenuItem 指定命令

我有一个上下文菜单。它绑定到某个集合,并且它具有如下定义的 ItemTemplate:

itemTemplate 是一个带有 TextBlock 的简单 DataTemplate:

如何将 MenuItem 的 Command 属性绑定到基础对象的属性?