Обработка событий WPF между объектами - PullRequest
0 голосов
/ 07 сентября 2011

Я довольно новичок в C # / WPF, исходя из фона Obj-c.Я не совсем уверен, как это работает с точки зрения объектно-ориентированного дизайна и как разные классы видят друг друга.

Итак, у меня есть большое представление (MainView), у которого есть несколько пользовательских графиков и сетка данных внизу (Datagrid находится в отдельном xaml и имеет файл .cs позади него).Существует специальный объект, который добавляется к графикам, и при его перетаскивании обновляется сетка данных (с использованием dataGrid.ScrollIntoView).Код для ScrollIntoView находится в файле xaml.cs Datagrid.

Для меня это имеет смысл, так как MainView имеет все компоненты и «видит» все объекты, поэтому, когда обработчик событий dragWindowвызывается, затем MainView запрашивает DataGrid и вызывает его метод для обновления позиции столбца.(Я так понимаю, пожалуйста, поправьте меня, если я ошибаюсь).

Теперь я хочу пойти и другим путем.Так что, если я обновлю полосу прокрутки по горизонтали, перетаскиваемое окно в MainView будет обновлено.Это не имеет особого смысла для меня.Я могу создать обработчик событий в xaml.cs таблицы данных.Но он не видит dragWindow в MainView правильно?Так что я не совсем уверен, как начать реализацию этой функциональности.Любая помощь всегда ценится.Спасибо!

1 Ответ

2 голосов
/ 07 сентября 2011

Ваш элемент управления сеткой должен предоставлять событие для уведомления любых потребителей (MainView в этом случае) о том, что прокрутка произошла.

public class YourGridControl
{
    public event EventHandler GridScrolled;
}

MainView может затем прикрепить обработчик к этому событию вдизайнер или в коде:

gridCtrl.GridScrolled += OnGridScrolled;

private void OnGridScrolled(object sender, EventArgs e)
{
    // Logic here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...