첨부한 cs파일은 인터넷에서 떠돌다가 찾아낸 겁니다.
출처는 기억이 나지 않습니다.
간단하게 사용법 올리겠습니다.
1. 첨부파일을 자신의 실버라이트 프로젝트에 추가합니다.
2. VS2008에서 본 파일을 열어 namespace를 자신의 프로젝트 명으로 변경합니다.
3. Page Class에 아래 추가
private MouseWheelHelper _mouseWheelHelper;
4. Page_Loaded 함수 안에 아래 이벤트 추가
_mouseWheelHelper = new MouseWheelHelper(this, "SilverlightControl");
_mouseWheelHelper.Moved += new EventHandler<MouseWheelEventArgs>(MouseWheelHelper_Moved);
5. Page Class에 아래 함수 추가하고 적당히 고쳐서 쓰시면 되겠습니다.
private void MouseWheelHelper_Moved(object sender, MouseWheelEventArgs e)
{
if (e.Delta > 0) // 휠을 위로 스크롤
{
// 여기에 함수 호출
}
else // 휠을 아래로 스크롤
{
// 여기에 함수 호출
}
e.Handled = true;
}
**********************************************************************************
* 첨부 파일에 샘플 예제 하나 챙겼습니다. ^^
**********************************************************************************
샘플프로젝트 Page.xaml.cs 파일에 적용 한 모습
휠 이벤트 사용을 위해 추가한 부분은 붉은 색으로 표시했습니다.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Interop;
namespace SampleWheel
{
public partial class Page : Canvas
{
private MouseWheelHelper _mouseWheelHelper;
private readonly double _dScaleStep = 0.1;
private readonly double _dMinScale = 0.1;
public void Page_Loaded(object o, EventArgs e)
{
// Required to initialize variables
InitializeComponent();
BrowserHost.Resize += new EventHandler(BrowserHost_Resize);
_mouseWheelHelper = new MouseWheelHelper(this, "SilverlightControl");
_mouseWheelHelper.Moved += new EventHandler<MouseWheelEventArgs>(MouseWheelHelper_Moved);
}
void BrowserHost_Resize(object sender, EventArgs e)
{
Width = BrowserHost.ActualWidth;
Height = BrowserHost.ActualHeight;
cvContent.SetValue(Canvas.LeftProperty, (Width - cvContent.Width) / 2);
cvContent.SetValue(Canvas.TopProperty, (Height - cvContent.Height) / 2);
}
private void MouseWheelHelper_Moved(object sender, MouseWheelEventArgs e)
{
if (e.Delta > 0) // 휠을 위로 스크롤
{
// 여기에 함수 호출
ScaleTF.ScaleX += _dScaleStep;
ScaleTF.ScaleY += _dScaleStep;
}
else // 휠을 아래로 스크롤
{
// 여기에 함수 호출
if ((ScaleTF.ScaleX - _dScaleStep) > _dMinScale) // 너무축소되어 사라지는 것을 방지
{
ScaleTF.ScaleX -= _dScaleStep;
ScaleTF.ScaleY -= _dScaleStep;
}
}
e.Handled = true;
}
}
}
[출처] 실버라이트 네이버 카페