2011-09-06 3 views
0

Obj-c 배경에서 오는 C#/WPF를 처음 접했습니다. 나는 이것이 객체 지향 디자인의 측면에서 어떻게 작동하는지, 그리고 서로 다른 클래스가 서로를 어떻게 보는지에 대해서는 잘 모르겠습니다.개체 사이의 WPF 이벤트 처리

그래서 일부 사용자 정의 플롯과 아래쪽에 DataGrid가있는 큰보기 (Datagrid는 별도의 xaml에 있으며 그 뒤에 .cs 파일이 있음)가 있습니다. 플롯에 추가되는 사용자 정의 객체가 있습니다.이 객체를 드래그하면 DataGrid.ScrollIntoView를 사용하여 DataGrid가 업데이트됩니다. ScrollIntoView의 코드는 Datagrid의 xaml.cs 파일에 있습니다.

MainView에 모든 구성 요소가 있고 모든 객체를 볼 수 있기 때문에 나에게이 의미가 있습니다. 따라서 dragWindow의 이벤트 처리기가 호출되면 MainView에서 DataGrid를 요청하고 해당 메서드를 호출하여 열 위치. (이것이 내가 이해하는 방식입니다. 틀렸을 때 저를 고쳐주십시오.)

이제 다른 방법으로 가고 싶습니다. 스크롤바를 가로로 업데이트하면 MainView의 드래그 윈도우가 업데이트됩니다. 이것은 나에게별로 의미가 없습니다. DataGrid의 xaml.cs에 이벤트 핸들러를 만들 수 있습니다. 그러나 MainView에서 dragWindow가 제대로 표시되지 않습니까? 따라서이 기능을 구현하는 방법을 잘 모르겠습니다. 도움이 항상 감사합니다. 감사!

답변

2

그리드 컨트롤은 스크롤이 발생했다는 소비자 (이 경우 MainView)에게 알리기 위해 이벤트를 노출해야합니다.

public class YourGridControl 
{ 
    public event EventHandler GridScrolled; 
} 

MainView는 디자이너 또는 코드에서이 이벤트 핸들러를 첨부 할 수 있습니다

gridCtrl.GridScrolled += OnGridScrolled; 

private void OnGridScrolled(object sender, EventArgs e) 
{ 
    // Logic here 
}