간단하게 Wheel이 지원되는 리스트 박스 만드는 방법을 알려드리도록 하죠.^^
먼저 Wheel 을 지원 받을 수 있도록 아래 포스트에 가서 Wheel을 지원할 수 있게 하는 class를 다운 받습니다.
http://cafe.naver.com/mssilverlight/693
아니면 새로 짜도 상관은 없습니다.
그리고 아래와 같은 클래스를 만듭니다.
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using HugeFlow.Interface;
- namespace HugeFlow.Controls
- {
- [TemplatePart(Name = WheelListBox.ElementScrollViewerName, Type = typeof(ScrollViewer))]
- public class WheelListBox : ListBox
- {
- #region ScrollOffset
- /// <SUMMARY>
- /// Gets or sets the ScrollOffset possible Value of the double object.
- /// </SUMMARY>
- public double ScrollOffset
- {
- get { return (double)GetValue(ScrollOffsetProperty); }
- set { SetValue(ScrollOffsetProperty, value); }
- }
- /// <SUMMARY>
- /// Identifies the ScrollOffset dependency property.
- /// </SUMMARY>
- public static readonly DependencyProperty ScrollOffsetProperty =
- DependencyProperty.Register(
- "ScrollOffset",
- typeof(double),
- typeof(WheelListBox),
- null);
- #endregion ScrollOffset
- public WheelListBox() : base()
- {
- DefaultStyleKey = typeof(ListBox);
- ScrollOffset = 20;
- (new MouseWheelHelper(this)).WheelScroll += new EventHandler<MouseWheelEventArgs><MOUSEWHEELEVENTARGS>(Wheel_Moved);
- }
- void Wheel_Moved(object sender, MouseWheelEventArgs e)
- {
- e.Handled = true;
- double tempOffset = ElementScrollViewer.VerticalOffset - ScrollOffset * e.Delta;
- if (tempOffset < 0)
- tempOffset = 0;
- else if (tempOffset > ElementScrollViewer.ScrollableHeight)
- tempOffset = ElementScrollViewer.ScrollableHeight;
- ElementScrollViewer.ScrollToVerticalOffset(tempOffset);
- }
- /// <SUMMARY>
- /// Identifies the optional ScrollViewer element from the template.
- /// </SUMMARY>
- internal ScrollViewer ElementScrollViewer { get; set; }
- private const string ElementScrollViewerName = "ScrollViewer";
- public override void OnApplyTemplate()
- {
- base.OnApplyTemplate();
- ElementScrollViewer = GetTemplateChild(ElementScrollViewerName) as ScrollViewer;
- }
- }
- }
어째 간단하게 보이실런지..^^ 쉽게 갔다 쓰는 용으로 프로젝트도 하나 만들어 봤습니다. 첨부합니다. 그럼 유용하게 사용하시길.^^ - smile -
[출처] error1001.com