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

wpf - 如何在 WPF 中分解出 DataTemplate 的绑定?

我有一个DataTemplate我想重用的。我要考虑的部分是绑定,因为它是唯一改变的东西。我的DataTemplate长相大致是这样的。(实际上还有很多,但我已经去掉了无关的东西。)

如何DataTemplate在简单地改变我绑定的属性的同时重用它?(请注意,如果它像 a 一样简单TextBox,我不会担心,但它DataTemplate实际上包含StackPanel 和许多其他元素。我想将它集中在一个地方,因此DataTemplate.)

我想了两种方法来解决这个问题。

  1. 创建一个简单的自定义控件。重用它,不要担心重用DataTemplate.
  2. 试验某种 DataTemplate 的子类。(有人告诉我这是可能的。)我会向它添加一个依赖属性,让我指定要绑定的属性的名称。

建议?

0 投票
3 回答
5112 浏览

.net - 在 MVVM 中,DataTemplates 是否将 Views 视为 UserControls 是 Views?

在 MVVM 中,每个 View 都有一个 ViewModel。我理解的视图是一个窗口、页面或用户控件,您可以将视图模型附加到其中,视图从中获取其数据。

但是DataTemplate也可以呈现 ViewModel 的数据。

所以我理解 DataTemplate 是另一个“视图”,但似乎存在差异,例如 Windows、Pages 和 UserControls 可以定义自己的 .dll,一种类型通过附加模板与 DataContect 绑定,以便 Windows、Pages , UserControls 可以通过ServiceLocator/Container等动态附加到 ViewModels。

在 UI 上呈现 ViewModel 的数据时,DataTemplates 与 Windows/Pages/UserControls 有何不同?除了这四种之外,还有其他类型的“视图”吗?

0 投票
1 回答
3980 浏览

wpf - WPF 中基于数据的模板选择

我有这个简单的 XAML 示例:

它以 MVVM 样式在可观察集合中呈现我的项目。每个项目在属性中都有其水平位置。每个项目还有一个属性 IsSpecial ,它告诉它是否想以某种特殊的方式呈现。我希望普通项目(IsSpecial=false)呈现为红色方块(已经在代码中),特殊项目呈现为蓝色圆圈,里面有“特殊”文本。

我不知道如何调整 XAML 代码来为项目进行模板选择。有没有办法在不编写我自己的 ItemTemplateSelector 的情况下做到这一点?它是否仍然适用于基于绑定的画布定位。我认为解决方案是将项目模板提取到一个单独的模板中,为特殊项目再创建一个模板,然后以某种方式使用触发器......但这对我来说并不容易,因为我目前是 WPF 初学者。

另一件事是我非常不喜欢将位置传递给项目的方式。还有其他方法吗?

还有其他建议如何改进代码吗?

0 投票
3 回答
16210 浏览

wpf - 如何将 ObservableCollection 绑定到 DataTemplate 中的文本框?

我正在尝试成功将 ObservableCollection 绑定到 DataTemplate 中的 TextBoxes。我可以让数据正确显示,但我无法通过 UI 更改列表数据。我有一个名为“模型”的模型类,其中包含一个名为“列表”的 ObservableCollection。该类实现 INotifyPropertyChanged 接口。这是shell的xaml。Window1 网格的 DataContext 设置为“theGrid.DataContext=model”

这是模型类的代码:

任何人都可以建议我是否以正确的方式进行此操作?

0 投票
4 回答
19270 浏览

wpf - 如何将 ViewModel 的 ObservableCollection 绑定到 MenuItem?

当我将菜单项与 ObservableCollection 绑定时,只有 MenuItem 的“内部”区域是可点击的:

替代文字 http://tanguay.info/web/external/mvvmMenuItems.png

在我看来我有这个菜单:

然后我将它与这个DataTemplate绑定:

由于 ObservableCollection ManageMenuPageItemViewModels中的每个 ViewModel都有一个属性TitleIdCode,所以上面的代码乍一看可以正常工作。

但是,问题是 DataTemplate 中的MenuItem实际上另一个 MenuItem 内(好像它被绑定了两次),因此在上面的 DataTemplate 中,Background="Red"每个菜单项内都有一个红色框,只有这个区域可以单击,而不是整个菜单项区域本身(例如,如果用户单击复选标记所在的区域或内部可单击区域的右侧或左侧,则不会发生任何事情,如果您没有单独的颜色很混乱。)

将 MenuItems 绑定到 ViewModel 的 ObservableCollection 以使每个 MenuItem 内的整个区域都可点击的正确方法是什么?

更新:

因此,我根据以下建议进行了以下更改,现在有了:

替代文字 http://tanguay.info/web/external/mvvmMenuItemsYellow.png

我的 DataTemplate 中只有一个 TextBlock,但我仍然不能“为整个 MenuItem 着色”,只能为 TextBlock:

我将 Command 绑定放入 Menu.ItemContainerStyle 但它们现在不触发:

0 投票
3 回答
9671 浏览

silverlight - 从 DataTemplate 中绑定?

我正在构建一个 Silverlight 控件,并尝试通过它们各自的 DataTemplates 为 Header 和 Body ContentControls 设置绑定。我不知道为什么,但这不起作用(静默失败)。我唯一的猜测是这是因为 DataTemplates 是 StaticResources。任何人都可以提供建议吗?该控件具有以下默认模板:

谢谢!


更新

实际上,下面的代码也不起作用,所以我对 StaticResources 的假设可能是错误的。

0 投票
2 回答
8058 浏览

silverlight - Silverlight DataGrid.Celltemplate 绑定到 ViewModel

我正在实现 MVVC 模式,并且无法从数据网格中的 DataTemplate 中绑定视图模型中的属性。如果我在列中的 DataTemplate 之外有一个文本块,它可以正常工作(因为我直接引用 UserConrol 的数据上下文,即 VM)但是从 DataTemplate 内部它不会返回纯文本属性。但是,它将从迭代的 IEnumerable 项返回一个属性。

我忽略的 DataTemplate 是否存在某种问题?请注意,“{Binding Path=DataContext.testText, ElementName=View}”适用于除 DataTemplate 中的元素之外的所有元素。(请注意,我知道 DG 之外的第一个文本块不需要 ElementName 等,但我刚刚这样做是为了向自己证明它引用了正确的东西)

0 投票
1 回答
1346 浏览

c# - WPF ListView 不呈现模板

我有一个ListView我正在填充来自ObservableCollection. 在我决定添加第二个列表视图来过滤一些项目之前,一切都运行良好。

我现在设置的是主列表视图将ItemGroup对象作为呈现的项目,显示的项目是项目组中的第一个。设想一个带有桶的哈希表,列表中呈现的项目是组中最新的项目。

我有一个按钮,单击该按钮将显示另一个列表视图,其中包含该“存储桶”中的所有项目。但是,我在新列表视图中得到的只是项目的空白条目。我看到他们的项目样式背景,但单元格模板似乎是空的。

我唯一的猜测是存在参考问题,因为某些项目已经在另一个ItemSource.

我附上了截图:

问题

这是我的DataTemplate

这是我设置数据绑定的方式(MatchApiObject 是上面用于绑定的对象DataTemplate):

而 groupViewListView 本身:

编辑:当我调试时,列表视图在绑定中有正确的项目(例如,CurrentItem 显示了应该用于绑定的正确对象),但由于某种原因它们没有出现。

0 投票
2 回答
3843 浏览

c# - 列表框中的嵌套数据模板

有没有办法仅从 XAML 中创建 DataTemplate 引用本身?在这种特殊情况下,尝试从包含在同一 DataTemplate 中的 ListBox 中引用 DataTemplate。这是我想要的解决方案,它不起作用。

这是我目前使用的解决方案,它有效。

后面有代码:

0 投票
1 回答
1533 浏览

c# - ResourceDictionary 中定义的 DataTemplate 的代码隐藏

我在 ResourceDictionary 中定义了一个 DataTemplate。模板需要一些数据(用于填充 ListBox)。以前,模板是一个 UserControl,数据是通过设置 DataContext 属性来提供的。

是否有某种方法可以为 DataTemplate 使用代码隐藏,或者使用 ObjectDataProvider 来提供数据的唯一选项?