1
A
回答
1
由於鼠標位置不是依賴項屬性,並且鼠標移動不是路由事件,因此使用模板化並不容易。這真的歸結爲你想做什麼,如果它只是顯示一條垂直線,那麼我是否同意Dany使用裝飾者,因爲你對滑動本身並不感興趣。但是,如果要將拇指移到鼠標所在的位置,我將使用附加屬性。
我使用附加屬性而不是直接在控件上掛接事件的原因是它提供了更多的模塊化和可重用的代碼庫,並使它在XAML中的視覺效果更加明顯,而不需要查看C#代碼以及。
這裏就是我會建議
public class SliderHelperPackage
{
public static readonly DependencyProperty BindThumbToMouseProperty = DependencyProperty.RegisterAttached(
"BindThumbToMouse", typeof(bool), typeof(SliderHelperPackage), new PropertyMetadata(false, OnBindThumbToMouseChanged));
public static void SetBindThumbToMouse(UIElement element, bool value)
{
element.SetValue(BindThumbToMouseProperty, value);
}
public static bool GetBindThumbToMouse(UIElement element)
{
return (bool)element.GetValue(BindThumbToMouseProperty);
}
private static void OnBindThumbToMouseChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (e.NewValue.Equals(e.OldValue))
return;
var slider = d as Slider;
if (slider == null)
throw new ArgumentException(@"dependency object must be a slider", "d");
if ((bool) e.NewValue)
{
slider.MouseMove += SliderMouseMove;
}
else
{
slider.MouseMove -= SliderMouseMove;
}
}
static void SliderMouseMove(object sender, MouseEventArgs e)
{
var slider = (Slider) sender;
var position = e.GetPosition(slider);
// When the mouse moves, we update the slider's value so it's where the ticker is (we take into account margin's on the track)
slider.Value = (slider.Maximum - slider.Minimum)*Math.Max(position.X-5,0)/(slider.ActualWidth-10) + slider.Minimum;
}
}
然後你就可以用它在你的XAML像這樣。所以,當你設置爲true,我們掛接到滑塊上的鼠標移動事件,因此拇指跟隨鼠標的這傢伙(提問者)做的一小部分的
<Slider SliderPosn:SliderHelperPackage.BindThumbToMouse="True" Margin="5" Height="25" VerticalAlignment="Top"/>
0
+3
只有鏈接的答案不是很好的答案。如果鏈接失效,那麼答案就變得毫無用處。你能否將足夠的信息添加到答案中,以便OP可以決定該鏈接是否值得關注。 – ChrisF 2012-01-17 23:02:23
相關問題
- 1. 在交叉點上顯示垂直線
- 2. 如何在Visual Studio中顯示垂直線以對齊標籤?
- 3. 如何在Vim中顯示垂直線以包裝線?
- 4. 在垂直線上垂直寫文本
- 5. 如何在鼠標上顯示矩形?
- 6. 將鼠標懸停在圖像上以顯示文本(垂直居中)
- 7. 垂直顯示
- 8. 如何在HighCharts上繪製垂直線?
- 9. 如何在臉上繪製垂直線
- 10. 在UIButton中垂直顯示標題?
- 11. MathJax方程在右側顯示垂直線,如何移除?
- 12. 如何在多行文本之間顯示垂直線
- 13. 如何在表格中顯示1條垂直線
- 14. 在div上垂直顯示文字
- 15. 矢量繪製不顯示垂直線
- 16. css - 在iPhone 5上顯示右側垂直線(右側)
- 17. 在不同位置的圖上顯示多條垂直線
- 18. 垂直ListView顯示
- 19. 如何在p:datatable中顯示垂直和水平標題?
- 20. 如何在圖表[c#]上創建顯示y1,y2 cooridnates的垂直線?
- 21. ChartJS - 底部的標籤顯示垂直
- 22. AndroidPlot - 顯示垂直域標籤
- 23. 在JFreeChart的barCharts中的條上垂直顯示標籤
- 24. 垂直標籤在github上無法正常顯示
- 25. 如何在浮動後垂直顯示列表:右鍵。如何在浮動後垂直顯示列表:right
- 26. 在鼠標上顯示搜索圖標
- 27. 在jPanel上顯示鼠標座標
- 28. 如何在移動設備上垂直顯示幻燈片
- 29. 如何在HTML上顯示垂直條紋選擇
- 30. 如何在UIWebView上顯示垂直或水平滾動條?
可能重複改變其值.. 。http://stackoverflow.com/questions/7764421/onmousemove-does-not-fire-on-canvas-in-wpf/7766111#7766111 – 2012-01-18 04:27:23