问题标签 [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.
wpf - 如何在 WPF 中分解出 DataTemplate 的绑定?
我有一个DataTemplate
我想重用的。我要考虑的部分是绑定,因为它是唯一改变的东西。我的DataTemplate
长相大致是这样的。(实际上还有很多,但我已经去掉了无关的东西。)
如何DataTemplate
在简单地改变我绑定的属性的同时重用它?(请注意,如果它像 a 一样简单TextBox
,我不会担心,但它DataTemplate
实际上包含StackPane
l 和许多其他元素。我想将它集中在一个地方,因此DataTemplate
.)
我想了两种方法来解决这个问题。
- 创建一个简单的自定义控件。重用它,不要担心重用
DataTemplate
. - 试验某种 DataTemplate 的子类。(有人告诉我这是可能的。)我会向它添加一个依赖属性,让我指定要绑定的属性的名称。
建议?
.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 有何不同?除了这四种之外,还有其他类型的“视图”吗?
wpf - WPF 中基于数据的模板选择
我有这个简单的 XAML 示例:
它以 MVVM 样式在可观察集合中呈现我的项目。每个项目在属性中都有其水平位置。每个项目还有一个属性 IsSpecial ,它告诉它是否想以某种特殊的方式呈现。我希望普通项目(IsSpecial=false)呈现为红色方块(已经在代码中),特殊项目呈现为蓝色圆圈,里面有“特殊”文本。
我不知道如何调整 XAML 代码来为项目进行模板选择。有没有办法在不编写我自己的 ItemTemplateSelector 的情况下做到这一点?它是否仍然适用于基于绑定的画布定位。我认为解决方案是将项目模板提取到一个单独的模板中,为特殊项目再创建一个模板,然后以某种方式使用触发器......但这对我来说并不容易,因为我目前是 WPF 初学者。
另一件事是我非常不喜欢将位置传递给项目的方式。还有其他方法吗?
还有其他建议如何改进代码吗?
wpf - 如何将 ObservableCollection 绑定到 DataTemplate 中的文本框?
我正在尝试成功将 ObservableCollection 绑定到 DataTemplate 中的 TextBoxes。我可以让数据正确显示,但我无法通过 UI 更改列表数据。我有一个名为“模型”的模型类,其中包含一个名为“列表”的 ObservableCollection。该类实现 INotifyPropertyChanged 接口。这是shell的xaml。Window1 网格的 DataContext 设置为“theGrid.DataContext=model”
这是模型类的代码:
任何人都可以建议我是否以正确的方式进行此操作?
wpf - 如何将 ViewModel 的 ObservableCollection 绑定到 MenuItem?
当我将菜单项与 ObservableCollection 绑定时,只有 MenuItem 的“内部”区域是可点击的:
替代文字 http://tanguay.info/web/external/mvvmMenuItems.png
在我看来,我有这个菜单:
然后我将它与这个DataTemplate绑定:
由于 ObservableCollection ManageMenuPageItemViewModels中的每个 ViewModel都有一个属性Title和IdCode,所以上面的代码乍一看可以正常工作。
但是,问题是 DataTemplate 中的MenuItem实际上在另一个 MenuItem 内(好像它被绑定了两次),因此在上面的 DataTemplate 中,Background="Red"每个菜单项内都有一个红色框,只有这个区域可以单击,而不是整个菜单项区域本身(例如,如果用户单击复选标记所在的区域或内部可单击区域的右侧或左侧,则不会发生任何事情,如果您没有单独的颜色很混乱。)
将 MenuItems 绑定到 ViewModel 的 ObservableCollection 以使每个 MenuItem 内的整个区域都可点击的正确方法是什么?
更新:
因此,我根据以下建议进行了以下更改,现在有了:
替代文字 http://tanguay.info/web/external/mvvmMenuItemsYellow.png
我的 DataTemplate 中只有一个 TextBlock,但我仍然不能“为整个 MenuItem 着色”,只能为 TextBlock:
我将 Command 绑定放入 Menu.ItemContainerStyle 但它们现在不触发:
silverlight - 从 DataTemplate 中绑定?
我正在构建一个 Silverlight 控件,并尝试通过它们各自的 DataTemplates 为 Header 和 Body ContentControls 设置绑定。我不知道为什么,但这不起作用(静默失败)。我唯一的猜测是这是因为 DataTemplates 是 StaticResources。任何人都可以提供建议吗?该控件具有以下默认模板:
谢谢!
更新
实际上,下面的代码也不起作用,所以我对 StaticResources 的假设可能是错误的。
silverlight - Silverlight DataGrid.Celltemplate 绑定到 ViewModel
我正在实现 MVVC 模式,并且无法从数据网格中的 DataTemplate 中绑定视图模型中的属性。如果我在列中的 DataTemplate 之外有一个文本块,它可以正常工作(因为我直接引用 UserConrol 的数据上下文,即 VM)但是从 DataTemplate 内部它不会返回纯文本属性。但是,它将从迭代的 IEnumerable 项返回一个属性。
我忽略的 DataTemplate 是否存在某种问题?请注意,“{Binding Path=DataContext.testText, ElementName=View}”适用于除 DataTemplate 中的元素之外的所有元素。(请注意,我知道 DG 之外的第一个文本块不需要 ElementName 等,但我刚刚这样做是为了向自己证明它引用了正确的东西)
c# - WPF ListView 不呈现模板
我有一个ListView
我正在填充来自ObservableCollection
. 在我决定添加第二个列表视图来过滤一些项目之前,一切都运行良好。
我现在设置的是主列表视图将ItemGroup
对象作为呈现的项目,显示的项目是项目组中的第一个。设想一个带有桶的哈希表,列表中呈现的项目是组中最新的项目。
我有一个按钮,单击该按钮将显示另一个列表视图,其中包含该“存储桶”中的所有项目。但是,我在新列表视图中得到的只是项目的空白条目。我看到他们的项目样式背景,但单元格模板似乎是空的。
我唯一的猜测是存在参考问题,因为某些项目已经在另一个ItemSource
.
我附上了截图:
这是我的DataTemplate
:
这是我设置数据绑定的方式(MatchApiObject 是上面用于绑定的对象DataTemplate
):
而 groupViewListView 本身:
编辑:当我调试时,列表视图在绑定中有正确的项目(例如,CurrentItem 显示了应该用于绑定的正确对象),但由于某种原因它们没有出现。
c# - 列表框中的嵌套数据模板
有没有办法仅从 XAML 中创建 DataTemplate 引用本身?在这种特殊情况下,尝试从包含在同一 DataTemplate 中的 ListBox 中引用 DataTemplate。这是我想要的解决方案,它不起作用。
这是我目前使用的解决方案,它有效。
后面有代码:
c# - ResourceDictionary 中定义的 DataTemplate 的代码隐藏
我在 ResourceDictionary 中定义了一个 DataTemplate。模板需要一些数据(用于填充 ListBox)。以前,模板是一个 UserControl,数据是通过设置 DataContext 属性来提供的。
是否有某种方法可以为 DataTemplate 使用代码隐藏,或者使用 ObjectDataProvider 来提供数据的唯一选项?