gpt4 book ai didi

WPF 绑定(bind)到集合中的特定项目

转载 作者:行者123 更新时间:2023-12-04 18:16:52 25 4
gpt4 key购买 nike

我目前正在尝试绑定(bind)到 wpf 集合中的某些项目。这最好用一个例子来解释。

我的 XAML 如下:

<Canvas Name="TaskCanvas" Width="467.667" Height="414">
<Ellipse Name="myElipse" Fill="White" Stroke="Black" Width="126" Height="76"
Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}" />
</Canvas>

现在,正如您所看到的,我只是绑定(bind)到属性作为椭圆的一个简单示例,以将其定位在我的数据源的 x 和 y 轴上。

我在 window_load 事件中有 c# 代码将我的数据源绑定(bind)到我的椭圆,如下所示:
PosClass posclass = new PosClass();
List<PosClass> posClasses = new List<PosClass>();

posclass.YPos = 100;
posclass.XPos= 100;
posClasses.Add(posclass);

posclass.YPos = 0;
posclass.XPos = 0;
posClasses.Add(posclass);

TaskCanvas.DataContext = posClasses;

现在我从我的收藏中绑定(bind)了 Canvas 容器。 PosClass 是一个简单的类,具有两个属性,即“XPos”和“YPos”。

当我运行代码集时,我的椭圆正确绑定(bind)到数据源,这很好,但是由于椭圆没有设置为从集合中获取精确的行,因此默认情况下会采用最后一行,因此将我的椭圆设置为 0,0 位置。

我想要做的是将椭圆设置为使用 XAML 中附加的集合中的第一个项目,或者如果我有更多项目,可以说第 10 个项目。我再次想在 XAML 中执行此操作,所以目前我只绑定(bind)到 X 和 Y 位置,是否有某种语法可以让我还指定要使用集合中的哪一行?

最佳答案

您可以使用方括号指定要绑定(bind)到的项目:

<Ellipse Name="myElipse" Fill="White" Stroke="Black" Width="126" Height="76" Canvas.Left="{Binding Path=[10].XPos}" Canvas.Top="{Binding Path=[10].YPos}"/>

如果要绑定(bind)集合中的所有项目,则需要使用 ItemsControlItemTemplateItemsPanel :
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<Ellipse Name="myElipse" Fill="White" Stroke="Black" Width="126" Height="76" Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}"/>
</ItemsControl.ItemTemplate>
</ItemsContol>

关于WPF 绑定(bind)到集合中的特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1715478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com