hier ist, was ich tun möchte. Ich erhalte eine Liste von Objekten aus einer Datenbank und binde diese Liste an ein ListBox-Steuerelement. Die ListBoxItems bestehen aus einem Textfeld und einer Schaltfläche. Hier ist, was ich mir ausgedacht habe. Bis zu diesem Punkt funktioniert es wie beabsichtigt. Das Objekt hat eine Reihe von Eigenschaften wie ID, Name. Wenn ich auf der Schaltfläche klicken Sie im ListBoxItem sollte das Element aus der List-Box und auch aus der Datenbank gelöscht werden ...WPF - Wie bekomme ich ein Objekt, das an ein ListBoxItem gebunden ist zurück
<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>
Die Textblock.Text zu object.Name und der ListBoxItem.Tag gebunden ist zu widersprechen. TagSelf (das ist nur eine Kopie des Objekts selbst).
Nun meine Fragen
Wenn ich auf die Schaltfläche im ListBoxItem klicken, wie bekomme ich die ListBoxItem und das Objekt, um es zurück gebunden. Um das Objekt aus der Datenbank zu löschen, muss ich es irgendwie abrufen. Ich habe versucht, etwas wie
ListBoxItem lbi1 =
(ListBoxItem) (taglistBox.ItemContainerGenerator.ContainerFromItem (taglistBox.Items.CurrentItem)); ObjectInQuestion t = (ObjectInQuestion) lbi1.Tag;Gibt es eine Möglichkeit, den Inhalt der ListBox automatisch zu aktualisieren, wenn sich die Itemsource ändert? Im Moment erreiche ich das durch
taglistBox.ItemsSource = null;
taglistBox.ItemsSource = ObjectInQuestion;
ich jede Hilfe dankbar würden Sie geben können: D Vielen Dank im Voraus