This is because you are using low configuration machine that donot have ability to manage your huge data.
Instead of Virtualization on UI side in WPF you can use OFFSET - FETCH keywords introduced in SQL Server 2012.
Your can also go by following sql query
Where you can make a range by selecting specific 100,200 or n numbers so that your application does not shows Out of Memory Exception.
SELECT
ROW_NUMBER() OVER(ORDER BY Barcode) AS RowNumber, *
FROM
AllBarcode AS tbl
WHERE RowNumber>= @StartFrom AND RowNumber<= @EndNumber