У меня есть ListView, который отображает TitleName из таблицы заголовков \ entity.После ListView_OnSelectionChanged я могу запросить Linq и отобразить панель TitlesDetails, а также сделать видимой другую панель для редактирования и удаления.Но я могу удалить только один элемент.Я попробовал Google и попробовал все, что мог, пока не расстроился и не отступил на несколько дней.Поистине, я был бы рад просто получить Multiple SelectedItems из ListView в любой список / коллекцию, так что тогда я могу делать что угодно с множеством.Но если кто-то показал мне, как просто получить выбранные элементы из ListView, я могу их удалить.Мне просто нужно, чтобы они были удалены из ListView и помещены в список / коллекцию, с которыми я могу работать.Тогда я мог бы понять, что «я явно не знаю», не может быть брошен из этого, не может быть брошен в это.Слишком много вариантов, которые я пытался определить, так как, возможно, я использую неправильный подход все вместе.
Хорошо, мистер ListView, могу ли я просто получить SelectedItems и показать мне, как просто поместить их в любой видиз списка?Так я могу играть с ними оттуда?Удалите их, манипулируйте ими, даже когда-нибудь добавьте их в таблицу TitlePlayList!
Xaml:
<ListView x:Name="ShowTitlesListView" Background="WhiteSmoke"
MinHeight="10" Height="200" MaxHeight="500"
Margin="5 7 5 3"
DataContext="{Binding Title}"
SelectionMode="Extended"
KeyUp="ShowTitlesListView_KeyUp"
SelectionChanged="ShowTitlesListView_OnSelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0 0">
<StackPanel Orientation="Horizontal" Margin="0 1">
<TextBlock x:Name="tbTitleName" Text="{Binding TitleName}"
FontSize="14"
TextWrapping="NoWrap"
Margin="2 1"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Моя модель, если необходимо увидеть:
...DB Context...
public DbSet<User> Users { get; set; }
public DbSet<Title> Titles { get; set; }
...Tables\Entities...
public class User
{
public int UserId { get; set; }
public string UserLogin { get; set; }
public string UserPwd { get; set; }
public List<Title> Titles { get; set; }
public override string ToString()
{
return UserId + " " + UserLogin + " ";
}
}
public class Title
{
public int TitleId { get; set; }
public string TitleName { get; set; }
public string TtsRaw { get; set; }
public string DirPath { get; set; }
public int UserId { get; set; }
public User User { get; set; }
public override string ToString()
{
return UserId + TitleId + TitleName;
}
}
мой кодПозади - * Ясно, что мне не хватает концепции, так что имейте это в виду, если хотите!
РЕДАКТИРОВАТЬ: Добавление-ListView.ItemSource находится в Page_Loaded (...), как показано ниже
//LOADING DATA from Database Provider - SQLite - EF Core 5
private void Page_Loaded(object sender, RoutedEventArgs e)
{
#region Show current users titles
using (var context = new PRSappContext())
{
var usersTitles =
from t in context.Titles
where t.UserId == CurrentUserId
orderby t.TitleId descending
select t;
List<Title> selectedUsersTitles = usersTitles.ToList();
ShowTitlesListView.ItemsSource = selectedUsersTitles;
}
...
private void ShowTitlesListView_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (ShowTitlesListView.SelectedItems.Count > 1)
{
((Title)ShowTitlesListView.SelectedItems);
Когда я пытаюсь выше строки, Я получаю ниже исключение «Исключение, обработанное пользователем» System.InvalidCastException HResult = 0x80004002 Сообщение = Невозможно привести объект COM типа «System .__ ComObject» к типу класса «PRSapp.Model.Title».Экземпляры типов, которые представляют компоненты COM, не могут быть преобразованы в типы, которые не представляют компоненты COM;однако они могут быть преобразованы в интерфейсы, если базовый компонент COM поддерживает вызовы QueryInterface для IID интерфейса.Source = PRSapp.UWP StackTrace: at PRSapp.UWP.MainPage.ShowTitlesListView_OnSelectionChanged (Отправитель объекта, SelectionChangedEventArgs e) в C: \ Users \ Flazz \ source \ repos \ FebOn \ 00MarchRepo \ PRSapp \ PRSapp.UW..PP: Mainлиния 412
if (ShowTitlesListView.SelectedItems.Count > 0)
{
Title selectedTitleID = ((Title)ShowTitlesListView.SelectedItem);
int _selectedTitleID = selectedTitleID.TitleId;
//Get public Title Id for Deleting a single and user forgets to select it
SelectedTitleId = selectedTitleID.TitleId;
using (var context = new PRSappContext())
{
var usersTitleDetails =
from t in context.Titles
where t.TitleId == selectedTitleID.TitleId
select t;
List<Title> selectedUsersTitles = usersTitleDetails.ToList();
TitleDetailsListView.ItemsSource = selectedUsersTitles;
TitleDetailsListView.SelectedIndex = 0;
}
}
}