2015-12-18 2 views
0

у меня есть изображение на Касание его я был перейти на другую страницуКак перемещаться по кадру на изображении, использованном в пользовательском управлении Universal Windows App?

<Image Source="{Binding ImagePath}" Tapped="Image_Tapped_1"/> 

C#

private void Image_Tapped_1(object sender, TappedRoutedEventArgs e) 
    { 
     var gameData = (sender as Image).DataContext as DataClass; 
     this.Frame.Navigate(typeof(GamePage), gameData); 
    } 

Теперь я создал пользовательский элемент управления для адаптивного интерфейса и мой код выглядеть следующим образом в настоящее время

<Grid> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup x:Name="VisualStateGroup"> 
      <VisualState x:Name="VisualStateMin600"> 
       <VisualState.Setters> 
        <Setter Target="image.(FrameworkElement.Width)" Value="NaN"/> 
       </VisualState.Setters> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="600"/> 
       </VisualState.StateTriggers> 
      </VisualState> 
      <VisualState x:Name="VisualStateMin0"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="1"/> 
       </VisualState.StateTriggers> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 
    <Image x:Name="image" Source="{Binding ImagePath}" Tapped="image_Tapped_1" Width="250" /> 

</Grid> 

Проблема в том, что, как я буду перейдите на другую страницу, с которой свойство taped не работает в UserControl?

ответ

1

В отделенном коде вашего пользовательского элемента управления (назовем его ImageControl), вам придется управлять обработчик события так:

public sealed partial class ImageControl : UserControl 
{ 
    public event EventHandler ImageTapped; 

    public void image_Tapped_1(object sender, TappedRoutedEventArgs e) 
    { 
     if (ImageTapped != null) 
     { 
      ImageTapped(this, EventArgs.Empty); 
     } 
    } 
} 

И из XAML, где вы объявить ImageControl:

<local:ImageControl ImageTapped="ImageControl_ImageTapped" /> 

И, наконец, из C# код позади:

private void ImageControl_ImageTapped(object sender, EventArgs e) 
{ 
    this.Frame.Navigate(typeof(YourOtherPage)); 
} 
+0

Спасибо я постараюсь его –

2

Попробуйте ((Frame)Window.Current.Content).NavigateTo Или, если необходимо, установите общедоступное свойство rootframe на App.Xaml.cs, чтобы вы всегда могли получить к нему доступ.