Удалите несколько элементов ViewView SelectedItem в коде с помощью Entity Framework Core - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть 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;
            }

        }

} ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...