본문 바로가기

Information/SilverLight3

[SL] DataGrid 휠마우스 사용하기..

기본적으로 DataGrid 는 휠마우스 이벤트는 제공되지만 휠을 움직였을떄 그리드의 포커스이동은 되지않습니다.
ㅠ_ㅠ 당연히 될줄 알았는데 당연히 안되더라구요.

그래서 휠 이벤트값을 보다가 대충 조합을 해보았더니작동이 되더군요.
Delta값은 0보다 크냐 작냐만 판단을 하였습니다.

Private Sub DataGrid1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Input.MouseWheelEventArgs)
        Dim PreIndex As Integer = Me.DataGrid1.SelectedIndex
        Dim NewIndex As Integer = PreIndex + IIf(e.Delta > 0, -1, 1)
        If NewIndex >= 0 Then Me.DataGrid1.SelectedIndex = NewIndex
        If Me.DataGrid1.SelectedIndex <> NewIndex Then Me.DataGrid1.SelectedIndex = PreIndex
        '//에러발생시 원래위치로 변경(레코드끝처리)
        Me.DataGrid1.ScrollIntoView(Me.DataGrid1.SelectedItem, Me.DataGrid1.Columns(0))
End Sub

코드가 알흠답지않지만. ㅠ_ㅠ 그래도 어떻게든 작동시켜보려고 만들다보니 이렇게 되었군요.

새롭게 지정된 인덱스번호에 문제가생길경우에는 파란줄에의해서 지정이 되었어도.
실제 인덱스값이 변경되지 않습니다. 그래서 이전 인덱스(PreIndeX)를 저장하고있다가.
인덱스 값에 오류가나면 다시 복원용으로 사용하게 하였습니다(녹색줄)

그리드의 Record Count 를 세어서 아에 못넘어가게하는것도  괜찮습니다. 저것을 만들당시 -_-; 레코드카운터를
셀수없었습니다. 지금은 셀수있지만. ㅠ_ㅠ;; 걍 문제없으니 그냥 그대로 씁니다.

그리고 마지막의 주황색줄이 없으면. 인덱스는 옴겨지더라도 스크롤이 움직이지는 않게됩니다.

스크롤을 바로 움직여주기 위해서 주황색줄이필요합니다. 근데 왠지 깔끔하게 작동하지는 않는것 같더군요.

나중에 보강이되면 소스는 다시 업데이트 하겠습니다.