Я пытаюсь реализовать пользовательский диалог поиска в программе WPF. Родительское окно - это ListView, который привязан к наблюдаемой коллекции.
Я сделал новое окно с формой поиска, и оно инициализируется так:
searchForm sf = new searchForm(_QPCollection);
sf.Owner = this;
sf.Show();
и у меня есть эта функция, которую я пытаюсь вызвать (в окне Владелец):
public void selectIndex(int index)
{
ListViewItem toSelect = listView1.Items[index] as ListViewItem;
toSelect.Focus();
}
Затем в дочернем окне (searchForm) пытается вызвать selectIndex, например, так:
public void SearchJob_Click(object sender, RoutedEventArgs e)
{
if (sJob.Text == "" || sJob.Text == null) { return; }
for (int i = findCount; i < _QPCollectionSearch.Count; i++)
{
if (i == _QPCollectionSearch.Count - 1) { i = 0; }
if (_QPCollectionSearch[i].jobNumAndFlow.IndexOf(sJob.Text) > -1)
{
findCount = i;
Owner.selectIndex(i);
}
}
}
Я получаю сообщение об ошибке: System.Windows.Window не содержит определения для «selectIndex».
_QPCollection
- это наблюдаемая коллекция, через которую будет проходить поиск. У меня работает логика поиска, но я не могу показывать Focus()
индекс ListView в родительском окне.
Моей первой мыслью было создание общедоступной функции, к которой я мог бы передать индекс, и она бы сфокусировалась, но я не могу найти способ вызова функции из дочернего окна, которое находится в родительском окне. *
Я правильно подхожу к этому? Этот ответ , кажется, предназначен для WinForms, но я уверен, что есть способ получить доступ к Родительскому окну и его открытым функциям / свойствам в WPF.