Как исключить строку из выдачи datagrid?
У меня есть datagrid, где пользователь двойным щелчком мыши выбирает строку из открывшегося окна, после чего окно закрывается, а его выбор засчитывается. Он из списка принтеров выбирает какой-то один. но проблема в том, что пользователь может выбрать несколько раз один и тот же, поэтому я хочу, чтоб если в моей таблице ( где содержатся уже выбранные принтеры), были совпадения с теми, которые есть в полном объёме ( таблица, где они все представлены). То из поиска должны убираться эти строки. Несколько дней провел и примерно накидал, как может по моей логике быть, но я многого ещё не могу найти.
Как думаю:
1) Прогружается метод во время загрузки окна, где пользователь будет выбирать строку.
2) Две переменные в этом методе, первая - отвечает за все принтеры, а вторая -за выбранные, я их объявляю
3) идет сравнение и если во всех принтерах, я нахожу совпадения, то я убираю эти принтеры из конечного результа
4) вывожу данные в datagrid
вот код C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace YchetApparatov
{
public partial class PrinterListWindow : Window
{
public static int SelectPrinterInt;
public PrinterListWindow()
{
InitializeComponent();
SelectPrinterInt = 0;
}
private void DGPrinterViev_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var printertable = NormApparatYchetEntities2.GetContext().PrinterTable.ToList(); // в printertable все принтеры которые есть
var naborinprinter = NormApparatYchetEntities2.GetContext().ComplectTable.ToList(); // в ComplectTable содержатся все принтеры, которые были использованы и которые я не -хочу видеть в datagrid
var currentItemNabor = (ComplectTable)((FrameworkElement)sender).DataContext;
var currentItem = (PrinterTable)((FrameworkElement)sender).DataContext;
if (currentItem.IdPrinter == currentItemNabor.IdPrinterInComplect )
{
}
SelectPrinterInt = currentItem.IdPrinter;
this.Close();
}
}
}
вот XAML
<Window x:Class="YchetApparatov.PrinterListWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:YchetApparatov"
mc:Ignorable="d"
Title="PrinterListWindow" Height="720" Width="1280">
<Grid Margin="0,97,0,34">
<Grid.RowDefinitions>
</Grid.RowDefinitions>
<DataGrid x:Name="DGPrinterViev" AutoGenerateColumns="False" IsReadOnly="True" Margin="0,-3,0,126"
ItemsSource="{Binding Source}" SelectedItem="{Binding SelectedRow}" >
<DataGrid.ItemContainerStyle>
<Style TargetType="DataGridRow">
<EventSetter Event="MouseDoubleClick" Handler="DGPrinterViev_MouseDoubleClick"/>
</Style>
</DataGrid.ItemContainerStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Модель принтера" Binding="{Binding ModelPrinter}" ></DataGridTextColumn>
<DataGridTextColumn Header="Цвтеной или ЧБ" Binding="{Binding ColorOrBW}" ></DataGridTextColumn>
<DataGridTextColumn Header="Скорость печати в минуту" Binding="{Binding SkorostPechati}" ></DataGridTextColumn>
<DataGridTextColumn Header="Инвентарный номер принтера" Binding="{Binding InventarNomerPrinter}" ></DataGridTextColumn>
<DataGridTextColumn Header="Серийный номер принтера" Binding="{Binding SeriyNomerPrinter}" ></DataGridTextColumn>
<DataGridTextColumn Header="Дата прихода принтера" Binding="{Binding DataPrihodaPrinter}" ></DataGridTextColumn>
<DataGridTextColumn Header="Дата списания принтера" Binding="{Binding DataSpisanPrinter}" ></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<Button Content="Очистить" HorizontalAlignment="Left" Margin="0,-30,0,0" VerticalAlignment="Top" Width="75"/>
<TextBox HorizontalAlignment="Left" Height="22" Margin="88,-30,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="165"/>
<Label Content="Фильтр" HorizontalAlignment="Left" Margin="0,-55,0,0" VerticalAlignment="Top" Height="25" Width="63"/>
<Label Content="Поиск" HorizontalAlignment="Left" Margin="88,-55,0,0" VerticalAlignment="Top" Height="25" Width="63"/>
</Grid>
</Window>