标签: itemscontrol

如何设置 WPF 的 ItemsControl 以在唯一位置显示每个元素?

我正在构建一个二十一点程序,目前正在研究手牌显示。

我有一个 PlayerSeat UserControl,其中有一个 ItemsControl 用于显示卡片。与正常的二十一点游戏一样,纸牌(在我的例子中是图像)是一张一张地叠在一起的。不同的游戏动作(拆分、双倍下注等)必须改变屏幕上纸牌的布局。ItemsControl 的 ItemSource 属性是ObservableCollection<Card> Hand我的 Player 的 ViewModel 中的“”属性。Card 对象包含带有 Card 图像的 BitmapSource。

我浏览了几个网页(参见帖子末尾),寻找实现我想要的目标的方法。我正在寻找一种方法来执行两个选项之一。

  1. (首选)指定每个“手模式”(拆分、双下等)的布局,并指定手 ( OC<Card>) 的每个索引应按顺序放置的位置。例如,对于 Hand 中的第一张卡片,将 Source 绑定到 Hand[0].CardImage 的 Image 控件放在 (X1, Y1) 处,然后将 Hand[1] Image 放在 (X2, Y2) 处,依此类推。最好可以通过在 ItemsControl 上设置某种绑定模板属性(以在手部模式之间进行更改)来进行调整。

  2. (后备)显示所有已绑定 Source 属性的 Image 控件。将这些图像的 Top/Left 属性绑定到 Hand[0].Top/Left 并在 Hand 类中进行位置计算。

我不是一个在没有亲自调查这个问题的情况下就提出问题的人。看来我需要将 ItemsPanelTemplate 与 StackPanel 一起使用,但不知道从哪里开始。关键是使图像重叠并放置在我想要的位置。您对我的问题的任何启发都会有所帮助。

参考: http: //drwpf.com/blog/itemscontrol-a-to-z/(特别是“ItemsControl:'P'代表面板”)

wpf itemscontrol observablecollection stackpanel itemspaneltemplate

1
推荐指数
1
解决办法
2407
查看次数

WPF 基于 Canvas 的 ItemsControl 具有最少的回收项目?

我使用 anItemsControl和 aCanvas作为其支持Panel。我经常需要 .Clear()ObservableCollection是 ItemsControl 的ItemSource,然后向其中添加新信息,这会导致所有控件被销毁并UserControl创建新的,这是非常缓慢的。即使在调用 .Clear() 之后,如何强制 ItemsControl 保留一定数量的容器,然后在将新项目添加到 ItemSource 时重用它们?

c# wpf itemscontrol wpf-controls

1
推荐指数
1
解决办法
637
查看次数

在 WPF 中使用 ItemsControl 时正确对齐控件

有人可以告诉我在使用ItemsControl.

我想在左侧有一个描述,TextBox在右侧有一个在 an 中定义的多个字段的描述,ObservableCollection最终得到如下内容:

First Name:    [FirstNameTextBox]
Last Name:     [LastNameTextBox]
Date of Birth: [DobTextBox]
Run Code Online (Sandbox Code Playgroud)

但我得到的是这个:

First Name: [FirstNameTextBox]
Last Name: [LastNameTextBox]
Date of Birth: [DobTextBox]
Run Code Online (Sandbox Code Playgroud)

我希望所有文本框都根据最大的<TextBlock>. 如果这是直接在控件中完成的<Grid>,那么这将是直接的,因为所有控件都直接在网格中,并且您只需定义以下列定义

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto"/>
    <ColumnDefinition/>
</Grid.ColumnDefinitions>
Run Code Online (Sandbox Code Playgroud)

I thought I could use the SharedSizeGroup property in the <Grid> but it still doesn't resize correctly. Instead it only displays the <TextBlock> stretch across the <Grid>.

Here's my code:

<Grid Grid.IsSharedSizeScope="True" Grid.Row="1">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" SharedSizeGroup="Labels" …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding itemscontrol mvvm

1
推荐指数
1
解决办法
1579
查看次数

WPF ItemsControl datacontext排序

好吧,我有一个ItemsControl绑定到a List<IComparableObject>,每一秒List对象都会改变,所以我不得不求助它们,所以我每秒都调用这个List.Sort()方法.在VS2008中检查Watch面板,我可以告诉它List被排序,但是ItemsControl没有.我怎样才能做到这一点?

谢谢!

sorting data-binding wpf itemscontrol

0
推荐指数
1
解决办法
1174
查看次数

DockPanel ItemsControl lastchild填充

我有一个dockpanel,我使用ItemsControl动态填充以填充面板.dockpanel需要来自itemscontrol列表的最后一个子节点来填充面板的其余部分,但是如果我以这种方式填充它似乎不会发生...我该怎么做才能让最后一个项目扩展?

我如何设置它的片段:(注意我将dockpanel背景设置为蓝色,以便我可以区分填充的用户控件和面板的背景)

        <DockPanel Background="Blue" LastChildFill="True" Margin="0">
        <ItemsControl ItemsSource="{Binding Requirements}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <local:TMGrid2View Baseline="{Binding}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </DockPanel>
Run Code Online (Sandbox Code Playgroud)

我目前关于发生了什么的假设是将子填充应用于itemscontrol而不是itemscontrol中填充的子代.我过去曾经使用过setter来指定孩子应该停靠在面板的一侧......例如,似乎没有一个子设置器选项来让它扩展...

c# wpf itemscontrol fill dockpanel

0
推荐指数
1
解决办法
5158
查看次数

硬编码XAML比代码隐藏生成的XAML更快吗?

我有一个WPF用户控件,其中包含许多文本框和按钮.目前,只要创建控件的实例,这些文本框和按钮都会通过后面的代码动态创建并加载到ItemsControl中.唯一的硬编码XAML是ItemsControl的声明.

有时这可能有点迟钝.如果我摆脱ItemsControl并将文本框和按钮硬编码到usercontrol的XAML中,会更快吗?

wpf xaml user-controls itemscontrol

0
推荐指数
1
解决办法
858
查看次数

WPF ItemsControl绑定和项目顺序

我在WPF应用程序中有ItemsControl,它绑定到一个对象数组.我正在使用ItemTemplate来呈现列表.我想为列表中的每个项目显示项目顺序,例如

客户1名称:xxxxx年龄:9999

客户2姓名:yyyy年龄:8888

任何想法如何做到谢谢

data-binding wpf datatemplate itemscontrol

-1
推荐指数
1
解决办法
1828
查看次数