Tag: itemscontrol

xaml绑定中的灾难性故障

我正在开发Windows 10 Universal App。 我的代码如下: XAML: 和代码背后: namespace MyProject { public sealed partial class BlankPage1 : Page { public BlankPage1() { DataContext = new[] { new { X = 50.0, Y = 100.0 }, new { X = 220.0, Y = 170.0 } }; InitializeComponent(); } } } 不幸的是,矩形没有显示在窗口中。 我收到编译错误: Catastrophic failure (Exception from HRESULT: […]

ItemsControl中的水平定向WrapPanel垂直列出

我在我的XAML中定义了两个DataTemplates,每个都用于一个单独的ItemsControl面板。 主ItemsControl列出了ObservableCollection对象中存储的Foo对象。 Foo对象本身具有作为ObservableCollection对象存储的自己的一组项。 我尝试以允许每个ObservableCollection Foo项目在标题中显示其名称的方式定义XAML(第一个ItemsControl)。 由此,每个Foo项目本身内的列表应水平显示(使用第二个ItemsControl),并在下面直接显示相关字段。 如果存在足够的物品,那么它们应该在必要时包裹到下一行。 这就是UI目前的情况: 这就是我希望UI实际出现的方式: 我的标记(按钮控件用于UI的另一个方面): _Load _Save _Add _Delete DataTemplate用于列出Foo项目: DataTemplate用于列出每个Foo项目中的项目: 我是WPF的新手,所以我觉得这是一个由我如何使用控件引起的问题。 为了生成我想要的UI,我需要做什么改变WPF?

从绑定项中获取ItemsControl中的DataGrid

我有一个ItemsControl在其模板中使用DataGrid,如下所示: ItemsControl绑定到我的模型中的Dists属性,如下所示: ObservableCollection<Dictionary> Dists; 如何获取与Dists属性中的项对应的DataGrid? 我试过这个代码,它给了我一个ContentPresenter,但我不知道如何从中获取DataGrid: var d = Dists[i]; var uiElement = (UIElement)icDistribucion.ItemContainerGenerator.ContainerFromItem(d); 我试过用VisualHelper.GetParent向上走树但找不到DataGrid。

如何在后面的代码中将ItemsPanelTemplate设置为动态创建的Grid

我已经在XAML定义了这个UserControl ,并希望在我的代码后面动态设置ItemsPanelTemplate (不像示例中的XAML ): 我尝试过类似的东西 this.Items.ItemsPanel.Template = new Grid(); 但悲惨地失败了。 有帮助吗? 背景:我只知道运行时网格列和行的数量。

当内容为可变高度时,列表框滚动条缩略图会更改大小

我有一个ListBox,其中显示了许多对象,每个对象可以是一个可变高度,基于每个对象具有的值的数量。 请参阅我之前回答的问题。 许多对象是5行高,而其他对象是1. ListBox中的滚动条似乎不喜欢这样,可能是由于虚拟化。 当您滚动浏览时, 滚动条上的滑块将根据当前时刻实际装入框中的项目数量来更改其大小 。 这使得拇指有时非常大,而在其他时候非常小。 由于此ListBox也包含在TabControl中,因此当您从一个选项卡切换到另一个选项卡时,ListBox通常会在您返回时滚动到其他部分。 有任何想法如何解决这样的问题? 附加信息:禁用虚拟化确实可以解决滚动问题,但代价是初始显示速度较慢。 但是,使用内部内容调整ListBox的大小会导致在水平resize时出现一些重大延迟(垂直很好),我假设这是由于我的模板宽度发生变化并需要在每个元素上重绘: 这是在字段边缘周围绘制边框以进行可视分组,其中val将拉伸到内容大小。 列表框还具有Horizo​​ntalContentAlignmment = Stretch以确保这看起来正确。 ——————- – var – opt – val – – ————- – – opt – val – – ————- – – opt – val – ——————- 注意:如果需要在另一个问题中询问,请告诉我,我会分开问题

在ItemsControl中WPF中的可拖动对象?

我希望能够实现带有可拖动项目的ItemsControl。 ItemsControl的原因是我可以在后台绑定到我的ViewModel。 我尝试在canvas中使用Thumb控件并且它工作得很完美,除非我将它粘贴在ItemsControl中它就会停止工作。 这是我尝试过的: 背后的代码: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new MainViewModel(); } private void MyThumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e) { Canvas.SetLeft((UIElement)sender, Canvas.GetLeft((UIElement)sender) + e.HorizontalChange); Canvas.SetTop((UIElement)sender, Canvas.GetTop((UIElement)sender) + e.VerticalChange); } 最后我的ViewModel: public class MainViewModel : DependencyObject { public ObservableCollection MyItems { get; set;} public MainViewModel() { MyItems = […]

ItemsControl拖放

我有一个带有DataTemplate的ItemsControl,它绑定到整数的ObservableCollection。 并在Windows资源中: 我正在尝试实现在ItemsControl中拖放项目的能力(即能够重新排序整数)。 有没有人有一个如何做到这一点的简单例子? 我连接了PreviewMouseMove,DragEnter和Drop事件。 问题是我无法弄清楚如何确定拖动哪个项目以及拖动它的位置。 似乎整个ItemsControl都被传递到事件中。

如何访问ItemsControl的子项?

如果我有一个从ItemsControl派生的组件,我可以访问它的ItemsControl ,以便我可以循环它们来执行某些操作吗? 我现在似乎找不到任何简单的方法。

如何在0.5秒内用WPF画出数万个点?

我正在编写WPF代码来显示实时情节,这是一条包含大约10,000点的连线。 在我的电脑中显示图片大约需要5秒钟。 有没有人有想法让它更快,并在0.5秒内? class eee : FrameworkElement { public eee() { _children = new VisualCollection(this); Random rand = new Random(); DrawingVisual dv = new DrawingVisual(); using (DrawingContext dx = dv.RenderOpen()) { Pen drawingPen = new Pen(Brushes.Black, 1); double x=rand.Next(300); double y = rand.Next(300); for (double i = 0; i < 1000; i = i + […]

如何获取当前ItemsControl项的索引?

有没有办法获取WPF当前ItemsControl项的索引? 例如,我想做类似的事情: 这样,在此之后,第一个TextBox将显示文本”0″ ,第二个”1″ ,第三个”2″ …