У меня есть пользовательский элемент управления ChatTextControl
с 2 textbox
и button
.xaml
выглядит следующим образом:
<Grid Background="White">
<Grid.ColumnDefinitions>
<!-- Message -->
<ColumnDefinition Width="*"/>
<!-- delete message -->
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!-- Message content -->
<StackPanel>
<TextBlock Text="{Binding Path= Pseudo}" FontWeight="SemiBold"/>
<TextBlock Text="{Binding Path= Message}" TextWrapping="Wrap"/>
</StackPanel>
<Button Grid.Column="1" Padding="8" VerticalAlignment="Top" Width="20" Height="20" Background="{x:Null}" Click="Button_Click"/>
</Grid>
Псевдо и сообщение поступают из следующего класса:
public class ChatListItemViewModel : BaseViewModel
{
public string Pseudo { get; set; }
public string Message { get; set; }
public int Id { get; set; }
}
ChatTextControl
вызывается в другом пользовательском элементе управления ChatListControl
:
<Grid Background="White">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:ChatTextControl />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
В моем главном окне я вызываю ChatListControl
примерно так:
<local:ChatListControl x:Name="MyChat" Margin="389,10,10,38"/>
И устанавливаю DataContext в коде:
ChatListModel chat = new ChatListModel();
MyChat.DataContext = chat;
ChatListModel:
public class ChatListModel : ChatListViewModel
{
private static int idCount = 0;
public ChatListModel()
{
Items = new List<ChatListItemViewModel>();
}
public void AddMessage(string p, string m)
{
Items.Add(new ChatListItemViewModel
{
Pseudo = p,
Message = m,
Id = idCount
});
idCount++;
}
}
Цель состоит в том, чтобы использовать событие Button_Click в ChatTextControl
, чтобы удалить элемент с соответствующим идентификатором в списке.Но я не знаю, как получить идентификатор в коде, будь то ChatTextControl.cs
или MainWindow.cs
.
Если кто-то знает, как это сделать или у вас есть идея для кнопки удаления, пожалуйста,дай мне знать.