我在wp7中创建了一个滑块来控制backgroundaudio播放器的音量。
<Slider x:Name="VolumeSlider" Height="89" Margin="12,0,24,-20" VerticalAlignment="Bottom" ManipulationCompleted="OnSoundManipulationChanged" Maximum="100" SmallChange="1" LargeChange="100" Value="75"/>
发生的事情是,我试图操纵滑块,但滑块只是移动一小步,即使我尝试移动很长距离。 在我从滑块上移开手指之前,ManipulationCompleted事件不会被触发,但它也只是设置较小的值更改。
在我的应用中导航一次到另一个页面后会发生此行为。 如果我重新启动应用程序,它会再次运行。
答案 0 :(得分:0)
我找到了解决方案,解决方案由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" />