gpt4 book ai didi

WPF ListBox 绑定(bind)到项目的索引

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

很容易将一些东西绑定(bind)到 ListBox 的 SelectedIndex,
但我希望 ListBox 中的每个项目都能够绑定(bind)到它在列表中的索引。

可能听起来很奇怪,所以这就是我想要做的:

<DataTemplate x:Key="ScenarioItemTemplate">
<Border
Margin="8,2,8,2"
Background="#FF3C3B3B"
BorderBrush="#FF797878"
BorderThickness="2"
CornerRadius="5">
<DockPanel>
<DockPanel DockPanel.Dock="Top" Margin="0,2,0,0">
<Label HorizontalAlignment="Left"
DockPanel.Dock="Left"
FontWeight="Heavy"
Foreground="White"
Content="{Binding Path=Position}"
MinWidth="50"/>

<Label
Content="{Binding Path=Name}"
DockPanel.Dock="Left"
FontWeight="Heavy"
Foreground="white"/>
<Label
Content="{Binding Path=Header}"
Foreground="white"
DockPanel.Dock="Left"/>

<TextBlock HorizontalAlignment="Right"
Background="#FF3C3B3B"
DockPanel.Dock="Left" Foreground="White" FontWeight="Heavy">
<Hyperlink Click="CloseHyperlink_Click" Tag="">X</Hyperlink>
</TextBlock>

我想将超链接的 TAG 属性绑定(bind)到相关项目的索引。
因此,当用户单击超链接时,我可以使用该超链接的 TAG 属性确定是什么项目导致了事件。
var hyperlink = (Hyperlink)sender;
var index = Convert.ToInt32(hyperlink.Tag);

建议?

最佳答案

据我所知,实际上并没有一个属性可以指示您的项目的索引。如果您有权访问 ListBox 绑定(bind)到的项目的原始列表,则可以访问超链接的 DataContext 以确定项目的索引,如下所示:

var hyperlink = (Hyperlink)sender;
var item = (SourceType)hyperlink.DataContext;
int index = sourceList.IndexOf(item);

或者,您可以在超链接上调用 ItemsControl.ContainerFromElement 以获取与超链接关联的 ListBoxItem,然后在 ListBox 中找到 ListBoxItem 的位置,但它并不能真正为您提供您尚未拥有的任何东西。

关于WPF ListBox 绑定(bind)到项目的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/259092/

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