gpt4 book ai didi

c# - WPF - 如何获取绑定(bind)到 ListBoxItem 的对象

转载 作者:太空狗 更新时间:2023-10-29 20:43:25 26 4
gpt4 key购买 nike

这是我想做的。我从数据库中获取对象列表,并将此列表绑定(bind)到 ListBox 控件。 ListBoxItems 由一个文本框和一个按钮组成。这是我想出的。到目前为止,它按预期工作。该对象具有许多属性,如 ID、名称。如果我单击 ListBoxItem 中的按钮,则应从 ListBox 和数据库中删除该项目...

<ListBox x:Name="taglistBox">    
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<ContentPresenter HorizontalAlignment="Stretch"/>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Tag" Value="{Binding TagSelf}"></Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Name="btTag" VerticalAlignment="Center" Click="btTag_Click" HorizontalAlignment="Left">
<Image Width="16" Height="16" Source="/WpfApplication1;component/Resources/104.png"/>
</Button>
<TextBlock Name="tbtagBoxTagItem" Margin="5" Grid.Column="1" Text="{Binding Name}" VerticalAlignment="Center" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

Textblock.Text 绑定(bind)到 object.Name,ListBoxItem.Tag 绑定(bind)到 object.TagSelf(它只是对象本身的一个副本)。

现在我的问题

  1. 如果我单击 listboxItem 中的按钮,我如何取回 listboxitem 和绑定(bind)到它的对象。为了从数据库中删除对象,我必须以某种方式检索它。我试过类似的东西

    ListBoxItem lbi1 =
    (ListBoxItem)(taglistBox.ItemContainerGenerator.ContainerFromItem(taglistBox.Items.CurrentItem)); ObjectInQuestion t = (ObjectInQuestion) lbi1.Tag;

  2. 有没有办法在 Itemssource 更改时自动更新 ListBox 的内容?现在我正在通过

    taglistBox.ItemsSource = null;
    taglistBox.ItemsSource = ObjectInQuestion;

如果您能提供任何帮助,我将不胜感激 :D提前致谢

最佳答案

每个 ListBoxItem 都会将数据绑定(bind)集合中的对应项作为 DataContext。 ListBoxItem.ItemTemplate 中的每个控件都将继承 DataContext。要获取单击按钮后面的对象,您可以在单击事件处理程序中执行以下操作:

MyClass item = (MyClass)(sender as Button).DataContext;

要将数据源中的更改自动更新到列表框中,您可以使用 ObservableCollection。

关于c# - WPF - 如何获取绑定(bind)到 ListBoxItem 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2788477/

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