问题标签 [itemcontainergenerator]
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.
mvvm - 虚拟化堆栈面板 - 虚拟化项目可见性
我有一个场景,我使用列表框来显示大量 ViewModel,每个 ViewModel 都有一个可见性属性,该属性根据应用程序逻辑而变化。
我遇到的问题是,当“虚拟化”项目的可见性发生变化时,滚动条不会更新以反映可滚动范围,直到通过手动滚动将项目显示在视图中。
这显然是由于虚拟化项目没有评估可见性绑定,因此不添加到可滚动范围,但是如何在不禁用可视化的情况下解决这个问题?
注意:我知道我可以使用过滤 CollectionView,但是让 Visibility 属性更适合我的应用程序逻辑。
下面是一些演示问题的代码。
c# - .NET 4.0 中的 ItemContainerGenerator.Items
我使用 .NET 4.5 开始了一个项目,现在我必须切换到 .NET 4.0。一切正常,除了 ItemContainerGenerator 的“Items”-Property 丢失。我使用它来查找以键入键的字母开头的 DataGrid 行。该代码是:
注意:调试时,“Items”-Property 存在并填充。
您是否知道访问“Items”-Property 的方法或解决方法以在不使用“Items”-Property 的情况下获得相同的功能?任何建议都将受到欢迎。
c# - TreeView 的 ContainerFromItem 返回 null
我TreeView
用一个根元素创建了一个:
然后,我将此根元素添加到树中:
并尝试定位项目:
因此,我从http://blog.quantumbitdesigns.com获取了这段代码片段。但是这条线:
始终为空。
我的观点是从根元素获取容器,获取它的子元素并通过,同时我可以找到元素并展开树。
那么,如何让 currentContainer 不为空呢?
PS我读过Treeview ContainerFromItem 总是返回 null并且TreeView.ItemContainerGenerator.ContainerFromItem 返回 null。
wpf - 如何从 ItemsControl 中的 ItemTemplate 获得控制权?
我的视图有一组用户控件(在 ItemsControl 的 ItemTemplate 中定义),我想获得对它们的引用。
我正在使用ItemContainerGenerator.ContainerFromIndex
,但它正在返回ContentPresenter
,而我需要获取我的 UserControl 类型PlotterColetaCanalUnico
。我该怎么做?
xml:
后面的代码:
我让它根据接受的答案工作,并进行以下更改:
Xaml - 为 UserControl 添加了一个名称:
后面的代码 - 直接查找 UserControl (没有按照答案的建议求助于 VisualTreeHelper):
listview - 访问 XAML DataTemplate 中的子项
我正在使用列表视图,列表视图内部是一个图像,这些图像是从 azure 上的 blob 检索到的。我如何访问列表视图中的图像控件以便在 Windows Phone 8.1 上获取其地址
c# - 你能从给定的 ItemContainerGenerator 中获取容器类型吗?
给定一个任意的ItemsControl
,是否可以获得它ItemContainerGenerator
创建/使用的容器对象的类型?
例如,给定 a ListBox
,我正在尝试获取 type ListBoxItem
。对于 a TreeView
,它将是TreeViewItem
等。
我正在尝试为任何ItemsControl
(或更准确地说,任何使用ItemContainerGenerator
.)的控件找到通用解决方案
我专门寻找Type
,而不是类型的实例,我也不想依赖创建实例来检查它的类型。
c# - 访问ListView UWP Windows 10中每个ListViewItem的DataTemplate中的RelativePanel
我想在其 DataTemplate 中的每个 ListViewItem 中访问和更改 RelativePanel 的 FlowDirection。我试过这个确切的方法,有同样的错误:如何访问 XAML DataTemplate 中的控件?我也尝试了给出的解决方案,但我有
始终返回 null,即使 myitem
不为 null。我尝试将 UpdateLayout() 放在它之前,但徒劳无功。我试着放置等待
绕来绕去,也是徒劳的,总是返回null。这是我的代码:
我还没有找到任何解决方案?
c# - 突出显示文本块中的部分文本不适用于所有 listboxItems
我正在尝试从列表框数据模板中突出显示文本块中的部分文本,而列表框数据模板又通过使用文本框在列表中搜索输入文本来绑定到自定义类的属性。
但问题是只有部分项目突出显示(大部分可见)但是当我最大化窗口并尝试输入另一个字符时,突然所有这些项目都被突出显示我猜测问题可能出在这块代码:
由于当项目不可见但项目当前位于列表框中时,此方法返回 null。
不知何故,我猜项目 listboxItem 实例尚未创建,直到您向下滚动或最大化以查看更多项目。
XAML 数据模板:
如果需要更多代码,请告诉我。
任何帮助将不胜感激!!
此外,如果有任何其他更好的方法可以找到绑定到自定义项目的 listboxItem,请告诉我。非常感谢!
c# - WPF:ItemContainerGenerator.Status = 未启动
我有一个数据网格,其中每一列都有一个组合框作为标题。每个组合框都将其源绑定到一个可观察的字符串集合。我已经通过后面的代码完成了所有这些,因为数据网格的列数在设计时是未知的。
当用户在每个组合框中选择一个项目时,该项目应在选择更改后禁用。所以我试着做一个这样的循环:
问题是当列上的循环到达第二次迭代时,我的代码会引发异常。在深入研究了我的局部变量之后,我注意到除了第一列中的组合框之外,ItemContainerGenerator.Status 到处都是 NotStarted。你能帮我解决这个问题吗?
wpf - WPF:如何重新创建 ItemContainer?
在我之前的问题如何更改 ComboBox 项目可见性之后,由于问题略有改变,我决定打开一个新帖子来解决它。对于那些不想阅读上一篇文章的所有评论的人来说,情况就是这样。
我有一个在运行时生成的 DataGrid。此数据网格的每一列在标题内都有一个组合框。所有这些组合框都具有相同的 Source,即类项的可观察集合。每个项目都显示我在组合框的 ItemContainerStyle 中使用的属性,以决定每个 ComBoBoxItem 是否应该是可见的。
现在,据我所知,WPF 以这种方式工作:如果一个视图包含组合框或树视图之类的控件,那么它们的项目(即 ComboBoxItem、TreeViewItem ...)将不会生成,直到它不是必需的(例如,当打开组合框的下拉菜单)。如果我应用 ItemContainerStyle,这将告诉目标应该如何创建它的项目。问题是,在生成这些项目的那一刻,我需要应用于样式的每个更改都不会被保存。
这是我的代码:
物品容器样式:
选择改变:
我的要求是,如果在 N 组合框中的任何一个中选择了一个项目,那么任何人都不能选择该项目,直到他失去 SelectedItem 状态。例如,假设我有 2 个组合框和 4 个 Item (x,y,a,b) 的集合。如果在 ComboBox1 中选择了 x,则在 ComboBox1 的 SelectedItem 更改(例如从 x 到 y)之前,无法在 2 个 ComboBox 中选择 x。现在我什至可以接受这样一个事实,即下拉列表中的项目只是被禁用,如果它使事情变得更容易,我只需要这样一个事实,即如果他已经被选中,它就不能再次被选中。
问题是该解决方案适用于每个具有 ItemContainerGenerator.Status = NotStarted 的 ComboBox(这意味着 ComboBoxItem 仍未创建)。如果我打开一个组合框的下拉列表,那么无论我做什么,它的 ComboBox 项都将保留它们的样式(因为 ItemContainerGenerator.Status = ContainersGenerated),而我没有打开的组合框会跟踪可见性的变化项目。
我正在寻找一种重新创建这些项目的解决方案,以便应用具有可见性更改的新样式