вот что я хотел бы сделать. Я получаю список объектов из базы данных и связываю этот список с элементом управления ListBox. Элементы ListBoxItems состоят из текстового поля и кнопки. Вот что я придумал. До этого момента он работает как задумано.
Объект имеет ряд свойств, таких как идентификатор, имя. Если я нажму на кнопку в 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 привязан к object.Name, а ListBoxItem.Tag к object.TagSelf (который является просто копией самого объекта).
Теперь мои вопросы
Если я нажму кнопку в элементе списка, как я получу элемент списка и объект, связанный с ним. Чтобы удалить объект из базы данных, мне нужно как-то его извлечь. Я пробовал что-то вроде
ListBoxItem lbi1 =
(ListBoxItem) (taglistBox.ItemContainerGenerator.ContainerFromItem (taglistBox.Items.CurrentItem));
ObjectInQuestion t = (ObjectInQuestion) lbi1.Tag;
Есть ли способ автоматического обновления содержимого ListBox при изменении Itemssource? Прямо сейчас я достигаю этого к
taglistBox.ItemsSource = null;
taglistBox.ItemsSource = ObjectInQuestion;
Буду признателен за любую помощь, которую вы можете оказать: D
Заранее спасибо