我找到了解决方案,该解决方案由 Paul Sinnema 发布并且运行良好!
http://forums.create.msdn.com/forums/p/82897/501068.aspx
using System.Windows;
using System.Windows.Controls;
namespace ControlClassLibrary
{
public class PSSlider : Slider
{
public PSSlider()
{
}
public UIElement GestureListenerBug
{
get { return (UIElement)GetValue(GestureListenerBugProperty); }
set { SetValue(GestureListenerBugProperty, value); }
}
public static readonly DependencyProperty GestureListenerBugProperty =
DependencyProperty.Register("GestureListenerBug", typeof(UIElement), typeof(PSSlider), new PropertyMetadata(null));
protected override void OnMouseEnter(System.Windows.Input.MouseEventArgs e)
{
SetHitTestVisibility(false);
base.OnMouseEnter(e);
}
protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e)
{
SetHitTestVisibility(true);
base.OnMouseLeave(e);
}
private void SetHitTestVisibility(bool visible)
{
if (GestureListenerBug != null)
{
GestureListenerBug.IsHitTestVisible = visible;
}
}
}
}
<ct:PSPhoneApplicationPage x:Class="MCRemote.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:cv="clr-namespace:MCRemote.Converters"
xmlns:ct="clr-namespace:ControlClassLibrary;assembly=ControlClassLibrary"
xmlns:co="clr-namespace:MCRemote.Controls"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
mc:Ignorable="d"
x:Name="Main"
SupportedOrientations="Portrait"
Orientation="Portrait"
shell:SystemTray.IsVisible="True"
Loaded="PhoneApplicationPageLoaded"
d:DesignHeight="768"
d:DesignWidth="480"
Foreground="White">
...
<ct:PSSlider x:Name="VolumeSlider"
GestureListenerBug="{Binding ElementName=Main}"
Maximum="1"
Minimum="0"
SmallChange="0.01"
LargeChange="0.1"
ManipulationStarted="SliderManipulationStarted"
ManipulationCompleted="SliderManipulationCompleted"
Value="{Binding PlaybackInfo.BoundVolume, Mode=TwoWay}"
Grid.Column="1"
Grid.Row="2" />