2015-06-10 2 views
-1

Я использую C# для Windows Phone 8.1.WP8.1 Шкала раскадровки при переводе Манипуляции

Что у меня есть: я перетащить прозрачный (не видимый, но доступный) бегунок и сетки следует по пути слайдера с TranslateX Манипуляция:

<Grid Opacity="1" x:Name="innerGrid" HorizontalAlignment="Left" Margin="4,0,0,0"> 
    <Grid.RenderTransform> 
    <CompositeTransform TranslateX="{Binding transXexact}" /> 
    </Grid.RenderTransform> 

    [... stuff inside Grid ...] 

</Grid> 
<Slider x:Name="sliderPercent2" Minimum="0" Maximum="100" Value="0" Opacity="0" Style="{StaticResource customSliderBigOverlay}" ValueChanged="sliderPercent_ValueChanged" ManipulationMode="TranslateX" ManipulationStarted="sliderPercent2_ManipulationStarted" ManipulationCompleted="sliderPercent2_ManipulationCompleted" /> 

и стороны кода:

private void sliderPercent_ValueChanged(object sender, RangeBaseValueChangedEventArgs e) 
{ 
    if (sender != null) 
    { 
     myPercView.transX = Convert.ToInt32(e.NewValue); 
     myPercView.transXexact = e.NewValue * (Window.Current.Bounds.Width - 38 - 40 - 10)/100; 
    } 
} 

private void sliderPercent2_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e) 
{ 
    Storyboard s = new Storyboard(); 

    DoubleAnimation doubleAni = new DoubleAnimation(); 
    doubleAni.To = 0; 
    doubleAni.Duration = new Duration(TimeSpan.FromMilliseconds(200)); 
    Storyboard.SetTarget(doubleAni, innerGrid); 
    Storyboard.SetTargetProperty(doubleAni, "Opacity"); 

    s.Children.Add(doubleAni); 

    s.Begin(); 
} 

private void sliderPercent2_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e) 
{ 
    Storyboard s = new Storyboard(); 

    DoubleAnimation doubleAni = new DoubleAnimation(); 
    doubleAni.To = 1; 
    doubleAni.Duration = new Duration(TimeSpan.FromMilliseconds(300)); 
    Storyboard.SetTarget(doubleAni, innerGrid); 
    Storyboard.SetTargetProperty(doubleAni, "Opacity"); 

    s.Children.Add(doubleAni); 

    s.Begin(); 
} 

теперь все работает отлично, но я хочу идти дальше. Теперь я также хочу, чтобы innerGrid увеличился до 0. Поэтому мне нужны ScaleX и ScaleY. Я могу добавить его в раскадровку с этим кодом:

var xAnim = new DoubleAnimation(); 
var yAnim = new DoubleAnimation(); 
xAnim.Duration = TimeSpan.FromMilliseconds(300); 
yAnim.Duration = TimeSpan.FromMilliseconds(300); 
xAnim.To = 1; 
yAnim.To = 1; 
Storyboard.SetTarget(xAnim, innerGrid); 
Storyboard.SetTarget(yAnim, innerGrid); 
Storyboard.SetTargetProperty(xAnim, "(UIElement.RenderTransform).(CompositeTransform.ScaleX)"); 
Storyboard.SetTargetProperty(yAnim, "(UIElement.RenderTransform).(CompositeTransform.ScaleY)"); 

НО тогда НЕ переводить в направлении X, при перемещении ползунка, а просто увеличить в 0 на положении это было, когда я начал манипуляции ,

Что я хочу: Масштабирование сетки в 0 с анимацией при использовании TranslateX Манипуляция, поэтому сетка следует за моим движением при масштабировании.

ответ

0

Трюк был проще, как и ожидалось. Нужно просто положить еще Grid по поводу затухания Grid и анимировать эти сетки отдельно.

Смежные вопросы