itemscontrol 相关问题

表示可用于呈现项集合的控件。

WinUI 3 - 以编程方式滚动到 ItemsControl 中的虚拟化项目(不是 ListView)

我正在使用一个相当典型的模板创建一个自定义 ItemsControl 子类: <Setter Property="ItemsPanel"> <Setter....</desc> <question vote="0"> <p>我正在使用一个相当典型的模板创建一个自定义的 <pre><code>ItemsControl</code></pre> 子类:</p> <pre><code>&lt;Style TargetType=&#34;local:MyControl&#34;&gt; &lt;Setter Property=&#34;ItemsPanel&#34;&gt; &lt;Setter.Value&gt; &lt;ItemsPanelTemplate&gt; &lt;ItemsStackPanel Orientation=&#34;Vertical&#34; /&gt; &lt;!-- or VirtualizingStackPanel; not really sure why there are two different seemingly identical virtualization panels --&gt; &lt;/ItemsPanelTemplate&gt; &lt;/Setter.Value&gt; &lt;/Setter&gt; &lt;Setter Property=&#34;Template&#34;&gt; &lt;Setter.Value&gt; &lt;ControlTemplate TargetType=&#34;local:MyControl&#34;&gt; &lt;ScrollViewer x:Name=&#34;ScrollViewer&#34; VerticalScrollBarVisibility=&#34;Auto&#34; HorizontalScrollBarVisibility=&#34;Auto&#34;&gt; &lt;ItemsPresenter /&gt; &lt;/ScrollViewer&gt; &lt;/ControlTemplate&gt; &lt;/Setter.Value&gt; &lt;/Setter&gt; &lt;/Style&gt; </code></pre> <p>其中 <pre><code>MyControl</code></pre> 是 <pre><code>ItemsControl</code></pre> 的子类。</p> <p>我需要一种通过内容甚至索引以编程方式滚动到项目的方法,这可能尚未在屏幕上实现,因为屏幕上的项目高度不统一。</p> <p>对于 <pre><code>ListView</code></pre>,我可以使用 <pre><code>ScrollIntoView</code></pre>,但我不想从 <pre><code>ListView</code></pre> 派生,因为它带有很多我想要替换/覆盖的功能。</p> <p>在WPF中<pre><code>VirtualizingStackPanel</code></pre>有<a href="https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.virtualizingpanel.bringindexintoviewpublic?view=windowsdesktop-8.0" rel="nofollow noreferrer">BringIndexIntoViewPublic</a>,但现在似乎不存在了,我在WinUI<pre><code>VirtualizingStackPanel</code></pre>或<pre><code>ItemsStackPanel</code></pre>中找不到任何等效的东西。</p> <p>在 WinUI 源代码中 <pre><code>ListView.ScrollIntoView</code></pre> 似乎在 <pre><code>ItemsPresenter</code></pre> 中使用了很多我无法访问的内部/本机功能。</p> <p>有没有办法在不子类化的情况下做到这一点<pre><code>ListView</code></pre>?</p> </question> <answer tick="false" vote="0"> <p>您尝试过 ItemsView 控件吗?</p> <pre><code>&lt;ItemsView x:Name=&#34;ItemsViewControl&#34; ItemsSource=&#34;{x:Bind Items}&#34; /&gt; </code></pre> <p>然后在代码隐藏中:</p> <pre><code>int targetIndex = 123; this.ItemsViewControl.StartBringItemIntoView(targetIndex, new BringIntoViewOptions()); </code></pre> </answer> </body></html>

回答 0 投票 0

WPF。如何使用同一行包装两个 ItemsControl?

抽象,我有两个(主要)ItemsControl 以包装方式绘制其内容。 我使用 WrapPanel 等。 到目前为止效果很好。另外,如果窗口大小在运行时发生变化。 但我...

回答 0 投票 0

如何访问位于 ItemsPanelTemplate 内的 ItemsWrapGrid 面板?

我使用了绑定到 ItemsSource 集合的 ItemsControl,并使用 ItemsWrapGrid 控制面板来排列项目。但 ItemsWrapGrid 面板被放置在 ItemsPanelTemplate 内,所以我不能

回答 2 投票 0

使用 ItemsControl 时是否有东西可以拉伸以填充所有剩余空间

我制作了一个简单的自定义控件来包含一些参数,并将所有这些控件放入 ItemsControl 中,如下所示。 我尽了最大的努力来拉伸物品以填充所有剩余空间,...

回答 1 投票 0

ListView 中的 DataTemplate(带有 VirtualizingStackPanel)导致 StackOverflow

我有一种数据类型元数据,其中包含视频或图像的文件路径。我正在尝试使用 DataTemplate 来显示该数据类型。将会有数千个这样的物体......

回答 1 投票 0

WPF - 使用 ItemsControl 创建 ImageGrid?

很抱歉用一个初学者问题打扰您。我正在尝试使用 C# 中的 WPF 实现图像网格(例如在漫画查看器或电影数据库中)。 现在我最初尝试使用 ListView 和 ListBox 但我...

回答 1 投票 0

将属性从 ItemsControl 源类传递到转换器参数

我有一个像这样的 ItemsControl 我有一个像这样的ItemsControl <ItemsControl Name="itemsControl"> <ItemsControl.ItemTemplate> <DataTemplate> <ToggleButton Style="{StaticResource ToggleButtonInputControl}"> <Grid> <local:CustomTextBox StringInTextBox="{Binding Path=UIntProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={local:UIntConverter Param=123}}"/> </Grid> </ToggleButton> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> ItemsControl的来源是在代码中设置的,它是ObservableCollection类型的MyClass,具有名为UIntProperty的属性。转换器 UIntConverter 扩展了 MarkupExtension,因此我可以像上面一样使用它,并且有一个名为 uint 的 Param 属性。 目标 目标是使用 UIntProperty 编辑 CustomTextBox。如果未输入数值,则值 UIntProperty 不应更改,如果 StringInTextBox 为空, 该值应设置为 0 并显示该值。 float 类型需要更多条件,但 uint 的情况应该给出最终目标的想法。 我已经尝试过 我可以将依赖属性StringInTextBox与CoerceValueCallback和PropertyChangedCallback一起使用,但根据我的测试,绑定首先触发,因此UIntConverter首先执行,这就是设置UIntProperty的地方。我可以使用中间 string 属性绑定到 StringInTextBox 并使用 set get 方法进行验证,但我必须将中间 string 实现到 MyClass 中的每个属性(许多属性) 。我还可以使 UIntConverter 返回 null 以了解何时保留原始值,但我必须在代码中使 UIntProperty 可以为空。 我想我可以使用 UIntConverter 并传递 original UintProperty,以便转换器可以在需要时返回该值,但我不知道如何将 UIntProperty 传递给 Param,我想UIntProperty 将与绑定处于相同的“范围”,但上面代码中的 Param=UIntProperty 不起作用。 问题 那么,问题是如何将 UIntProperty 传递给 Param 或作为转换器参数?我不知道当 UIntConverter 是 Param 时是否可以将值传递给 StaticResource,如果可能的话该怎么做? 提前致谢。 我认为你应该重新审视使用DependencyProperty的想法。 如果您有自定义控件,则可以定义任意数量的依赖属性,并让自定义控件拥有自己的响应(通过 PropertyChanged、CoerceValueCallback 和 ValidateValueCallback)。 相反,IValueConverter不允许您绑定到转换器参数,因为它不是DependencyProperty。当您构建更多的复杂性(浮动逻辑)时,您会喜欢有空间通过自定义控件添加所需的所有逻辑。 所以,典型的流程是这样的: 决定需要设置多少个属性(多少个单向、双向、单向源) 连接回调,以便控件实例能够响应属性更改。 更新任何只读(单向源)属性) 强制值回调旨在防止无效值。例如,对于滑块,您不能将 Value 设置为超出 Max 或 Min;因此,如果您更新 Min,它应该强制 Value 在范围内。 我的建议是使用 PropertyChanged 回调来添加逻辑。然后将文本属性设置为输入的某种函数(您可能有两个字符串,其中一个是编辑后看到的值,另一个是编辑时看到的值)。 也许您可以添加一个枚举类型属性来指示您想要应用哪些格式化规则(例如 UInt 格式化、Float 格式化等)

回答 1 投票 0

ItemsControl 包含 ItemTemplate 中绑定的 ComboBox(带有 Caliburn.Micro 的 WPF MVVM)

我遇到了一个问题,即从 ItemTemplate 中绑定的组合框列表中选择单个组合框中的一项。当我在其中选择一个值时,该值会在所有值中更新。很像...

回答 1 投票 0

为什么ItemsControl中的所有TextBox都使用最后动态添加的ValidationRule?

我有一个自定义文本框,在设置 Min 和 Max 属性时添加 MinMaxValidationRule 公共类 TextBox2 :文本框 { 公共静态只读 DependencyProperty MinProperty =

回答 1 投票 0

ItemsControl中UserControl的DataContext变空

我有一个 ItemsControl 如下。我想在其中添加不同的 UserController。我为此创建了一个 DataTemplate。我正在将我的项目添加到我在 ViewModel 中绑定的 ToolItems 中。但是 UserControl 的

回答 1 投票 0

ItemsControl 内部列表中的 DisplayMemberPathProperty

我有一个这样的列表 团体 ID ISO 姓名 美国 1个 纽约 纽约 美国 2个 新泽西州 新泽西州 英国 3个 罗 伦敦 英国 4个 嘛 曼彻斯特 我需要在另一个菜单中制作一个菜单 外面的菜单应该有2个选择...

回答 0 投票 0

我如何访问ItemsControl的子程序?

如果我有一个从ItemsControl派生出来的组件,我是否可以访问它的子代集合,以便我可以通过它们来循环执行某些操作?我目前似乎找不到任何简单的方法...。

回答 4 投票 29


在uno平台上使用ItemsWrapGrid的Items控件。

我试图建立一个带有自动元素的ItemsControl,在里面安排ItemsWrapGrid(取决于窗口大小)。在Uwp中,这一切都能正常工作。但是在uno平台上,ItemsWrapGrid不完全支持。I ...

回答 1 投票 0


FindVisualChild-在ItemsControl中获取命名的UI元素的属性

我通过使用ItemsControl在运行时生成UI元素。用户界面成功生成,但是如果我无法获取所生成的用户界面项的任何属性,例如标签的“内容”,或...

回答 1 投票 0

无法获得由ItemsControl创建的UI元素的属性

我通过使用ItemsControl在运行时生成UI元素。用户界面成功生成,但是如果我无法获取所生成的用户界面项的任何属性,例如标签的“内容”,或...

回答 1 投票 0

如何获取WPF ItemsControl的常规ItemContainer类型

我想从现有的ItemsControl对象确定ItemContainer类型。 var item = control as ItemsControl; //如何获取子容器类型?混合如何完成的示例:...

回答 1 投票 6

ItemContainerGenerator.ContainerFromItem方法如果项目已分组则返回null

在WPF ListBox中,我可以使用ItemContainerGenerator.ContainerFromItem(selectedItem)方法获取选定的项目容器,但是在对ListBoxItem进行分组时,它不起作用。 MainWindow.xaml

回答 1 投票 1

在多个网格之间共享列宽

我具有以下XAML: [[

回答 1 投票 1

© www.soinside.com 2019 - 2024. All rights reserved.