问题标签 [itemscontrol]

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

silverlight - Silverlight 2:希望可变数量的项目占据固定宽度

堆栈面板不合作。我们有一个固定的宽度,以及从左到右排列的可变数量的项目。

我们有一个项目控件,它使用堆栈面板来布置它们:

但这并不能正确调整项目的大小。无论有多少可用空间,它们的大小始终相同。如果项目太多,它们会在右侧被切断,而不是调整大小以使它们都适合。知道如何做到这一点吗?如果项目的数量是恒定的,我会使用网格,但事实并非如此。它通常是 1-4 项。

如果 ItemsPanelTemplate 可以是具有可变列数的网格,那就太好了。但我不知道在 ItemsPanelTemplate 中是否可能(或具有相同结果的东西)。

答案是编写一个特殊的面板子类,为包含的项目分配相等的宽度吗?

0 投票
4 回答
9141 浏览

wpf - WPF - 创建自定义 ItemsControl

我正在研究为 WPF 创建自定义控件,并且我发现了一些相当有用的博客,并且模糊地进入了足够的细节,但我仍然有点挣扎。

基本上,我正在尝试创建类似于臭名昭著的“Coda Slider”的东西,但我只是不知道如何正确开始。任何人都可以向我指出某人/某处的方向,让我了解如何创建自定义 ItemControls,或者向我提供基本信息,例如我需要覆盖哪些 ItemsControl 成员?

所有的帮助都将得到慷慨的接受。

0 投票
2 回答
9083 浏览

wpf - WPF - 用户控件默认内容属性

我正在创建一个 UserControl,我只是不记得你用来装饰你想作为默认内容属性的属性的属性的名称。

举一个具体的例子,假设我有一个名为“Title”的属性,我可以使用这样的属性语法来设置它 -

但是控件的使用者可能希望使用这样的元素语法 -

我知道有一个属性需要添加到 Title 属性以启用此支持,但我忘记了它是什么并且在任何地方都找不到它。

谁能帮我刷新我的记忆?另外,我正在寻找一个类似的属性来作用于从 ItemsControl 继承的 CustomControls。

0 投票
2 回答
774 浏览

wpf - 尝试停靠 ItemsControl 时 LastChildFill 不起作用

我在 WPF 用户控件中有以下标记:

我希望 ItemsControl 填充所有可用空间,但它不遵守 DockPanel 的 LastChildFill 属性。水平和垂直“拉伸”值也无济于事。我错过了什么?

0 投票
1 回答
501 浏览

c# - WPF:在 ListBox 上聚合属性

我有两个 ListBox,都使用 Extended SelectionMode。第一个的 ItemsSource 是一个 List,并使用数据模板。我正在尝试使用第一个属性的聚合作为第二个的 itemssource。例如:

因此,第一个列表中的对象包含 Dictionary 类型的属性。我想将第一个列表中所有选定项目的字典中的所有项目添加到第二个列表中。

转换器似乎在初始加载时被调用,然后不再调用,我最终得到一个空的第二个列表框。我错过了什么吗?

0 投票
1 回答
6145 浏览

wpf - 项目控件中的 WPF GridViewRowPresenter

我刚刚开始学习 WPF,我正在尝试在 ItemsControl 中使用 GridViewRowPresenter 来基本上复制 HTML 中简单表格的功能。ListView 不合适,因为它是交互式的(我不想要)。我绑定到未知数量的对象的通用列表。

我有一个自定义对象的列表,该对象具有两个字符串属性:名字和姓氏。以下代码有效:

虽然这没有任何效果:

我不知道从这里去哪里,我将不胜感激任何帮助!谢谢!

0 投票
1 回答
330 浏览

wpf - 在 WPF/Silverlight 中是否可以绑定到类似 HTML 的 TableControl?

鉴于以下类别和子类别:

  1. 动画(全家福、Calvin & Hobes、The Boondocks、Duck Tales、Looney Toons、Pink & The Brain)
  2. 芝麻街(Oscar、Ernie & Bert、Kermit de Frog、Elmo、Cookie Monster、Grover)

我正在寻找一种将其(动态)呈现为行和列的方法,如下所示:

P/S:我知道列表控件(ItemsControl、DataGrid、ListView 等),但似乎没有一个符合这个标准。

0 投票
3 回答
14265 浏览

wpf - 根据子对象类型选择 DataTemplate

我想对 ItemsCollection 进行数据绑定,但不是渲染集合项,而是渲染通过集合项上的属性到达的子对象。

更具体地说:这将是游戏的 2D 地图查看器(尽管在当前状态下它还不是 2D)。我将 ItemsControl 数据绑定到 ObservableCollection<Square>,其中 Square 有一个名为 Terrain(Terrain 类型)的属性。地形是一个基类,并有各种后代。

我想要的是 ItemsControl 从每个集合元素呈现 Terrain 属性,而不是集合元素本身。

我已经可以完成这项工作,但需要一些不必要的开销。我想知道是否有消除不必要开销的好方法。

我目前拥有的是以下类(简化):

还有一个名为 MapView 的 UserControl,包含以下内容:

鉴于此代码,如果我这样做:

我得到的东西看起来完全符合我的预期:一个 StackPanel,其中包含一个棕褐色盒子(用于 Dirt)和一个银色盒子(用于 SteelPlate)。但我得到了不必要的开销。

我特别关心的是我的 Square 数据模板:

我真正想说的是“不,不要费心渲染 Square 本身,而是渲染它的 Terrain 属性”。这接近于这个,但是这为每个 Square 的可视化树添加了两个额外的控件:一个 ContentControl,如上面 XAML 中明确编码的那样,以及它的 ContentPresenter。我在这里并不特别想要 ContentControl;我真的很想短路并将 Terrain 属性的 DataTemplate 直接插入到控件树中。

但是我如何告诉 ItemsControl 渲染 collectionitem.Terrain (从而查找上述地形对象的 DataTemplate 之一)而不是渲染 collectionitem (并为 Square 对象寻找 DataTemplate)?

我想将 DataTemplates 用于地形,但完全不一定用于 Square——这只是我发现的第一种有效的方法。事实上,我真正想做的是完全不同的事情——我真的想将 ItemsControl 的 DisplayMemberPath 设置为“Terrain”。这会直接呈现正确的对象(Dirt 或 SteelPlate 对象),而无需添加额外的 ContentControl 或 ContentPresenter。不幸的是,DisplayMemberPath 总是呈现一个字符串,而忽略了地形的 DataTemplates。所以它有正确的想法,但对我来说没用。

这整个事情可能是过早的优化,如果没有简单的方法来获得我想要的,我会接受我所拥有的。但是,如果有一种“WPF 方式”我还不知道要绑定到属性而不是整个集合项,它将增加我对 WPF 的理解,这正是我所追求的。

0 投票
1 回答
5864 浏览

wpf - WPF ItemsControl 数据绑定 - 添加额外的初始控件

我有以下 XAML 用于数据绑定项控件以显示组列表,其中包含一个标签和按钮以添加一个新组,首先出现:

对于少数组,所有内容都显示在一行上。

组 + 组 1 组 2 组 3

当我添加更多组时,包含项目的换行面板会换行,但添加新组的初始标签和按钮位于其自己的行上,数据绑定组从下一行开始。

组 + 组
1 组 2 组 3组 4 组
5

我可以理解为什么会发生这种情况,因为包装面板是嵌套的。我的问题是:如何在内部包装面板中包含第一个标签和按钮,以使它们不单独排成一行?

组 + 组 1 组 2 组 3 组 4 组
5

0 投票
2 回答
1515 浏览

wpf - 为什么 ItemsControl 在其父对象获得焦点时显示焦点矩形?

当 WPF 的 ItemsControl 认为它有焦点并且用户按下 Tab 或 Alt 时,它会显示一个焦点矩形。

但我最近有一个 ItemsControl 显示一个焦点矩形,即使它没有焦点——它的一个父项有焦点。ItemsControl 位于 UserControl 内部,而后者位于另一个具有焦点的 UserControl内部。像这样的东西:

或者,要直观地显示嵌套:

我花了一段时间(还有一个StackOverflow 问题)来弄清楚焦点矩形的来源,因为我从没想过没有焦点的控件会显示焦点矩形。

我仍在学习如何使用 WPF,显然我还不够了解,否则这不会让我感到困惑。两个问题可以帮助我理解:

  1. 为什么ItemsControl 实际上没有焦点,但它的父控件之一却显示焦点矩形?这个功能的原因是什么?(我确定有一个——可能与模板或可视化树有关?——我只是对 WPF 机制和哲学还没有足够深入的了解。)
  2. 这是如何工作的?ItemsControl 使用什么机制来决定它应该显示一个焦点矩形?