/ /スライダコントロールの動作の変更 - windows-phone-7

スライダコントロールの動作の変更 - windows-phone-7

バックグラウンドオーディオプレーヤーの音量をコントロールするためにwp7にスライダーを作成しました。

<Slider x:Name="VolumeSlider" Height="89" Margin="12,0,24,-20" VerticalAlignment="Bottom" ManipulationCompleted="OnSoundManipulationChanged" Maximum="100" SmallChange="1" LargeChange="100" Value="75"/>

何が起こるかは、私はスライダを操作しようとしています、長距離移動しようとしてもスライダはちょっとした動きをします。 私がスライダから指を離すまでは、ManipulationCompletedイベントは発生しませんが、小さな値の変更を設定するだけです。

この現象は、アプリケーションの別のページに1回移動した後に発生します。 アプリを再起動すると、再び動作します。

回答:

回答№1は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" />