Witam.
W jaki sposób można pobrać wszystkie elementy które są w ListView?
Nie chcę przy tym rzutować elementów na dane obiekty, bo to ma być metoda uniwersalna do wszystkich ListView w aplikacji (chodzi o eksport do pliku).
Do ListView elementy wrzucam przez ItemsSource.
Kod który mam teraz nie jest w pełni poprawny, ponieważ eksportuje mi tylko te elementy które są aktualnie widoczne (tj. jeżeli mamy 300 elementów, a na ekranie widać tylko 10, to wyeksportowane będą tylko te widoczne).
StringBuilder sb = new StringBuilder();
int columncount = ((GridView)lv.View).Columns.Count;
foreach (GridViewColumn h in ((GridView)lv.View).Columns)
{
sb.Append("\""+h.Header.ToString() + "\";");
}
sb.AppendLine();
for (int i = 0; i < lv.Items.Count; i++)
{
ListViewItem lvi = lv.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem;
//Tutaj dla niewidocznych elementów w lvi mam null
if (lvi != null)
{
GridViewRowPresenter gvp = FindVisualChild<GridViewRowPresenter>(lvi);
for (int j = 0; j < columncount; j++)
{
DependencyObject col = VisualTreeHelper.GetChild(gvp, j);
TextBlock tb = col as TextBlock;
sb.Append("\""+tb.Text + "\";");
}
}
sb.AppendLine();
}
File.WriteAllText(saveFileDialog.FileName, sb.ToString());