2016-08-18 2 views
2

Ich beginne meine erste Universal Windows App. Als erstes wollte ich die Hauptklasse "Page" für die Navigation unterteilen. Für einfache Zwecke wollte ich einfach einen RightTapped Ereignis-Hook hinzufügen, um eine Nachricht der tatsächlich angezeigten Seite anzuzeigen ...Fehler in UWP oder ich vermisse etwas

Jedenfalls habe ich ein brandneues Projekt erstellt. Erstellt MyPage eine einzige Klasse

public class MyPage : Page 
{ 
    public MyPage() 
    { 
     RightTapped += MyPage_RightTapped; 
    } 

    private async void MyPage_RightTapped(object sender, RightTappedRoutedEventArgs e) 
    { 
     var dialog = new MessageDialog("This page is " + GetType(), "What is my form"); 
     await dialog.ShowAsync(); 
    } 
} 

dann auf dem Hauptformular Standard, änderte ich MainPage.xaml von

<Page 

zu

<local:MyPage 

Im Code-Behind, ich

geändert
public sealed partial class MainPage : Page 

bis

public sealed partial class MainPage 

Führen Sie das Formular aus, es funktioniert, klicken Sie mit der rechten Maustaste auf die Tastatur, und die Nachricht wird angezeigt.

Jetzt das Problem. In der Haupt-Seite, auf der Grid-Erklärung, es mit einem Hintergrund ist ... definieren

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 

Wenn ich diese Farbe entfernen (der tatsächliche Farbe Standard ist „#FFFFFFFF“)

<Grid> 

die RightTapped funktioniert nicht mehr und das ist die einzige Änderung. Ich lege einen Hintergrund von jeder anderen Farbe und RightTapped funktioniert.

Kann jemand das erklären und warum es ohne Hintergrundfarbe ausfällt, die kein Lager gegen das Arbeiten mit einem Hintergrund haben sollte?

Antwort

3

Das klingt nach dokumentiertem Verhalten. Die Dokumentation für UIElement.RightTapped einige relevanten Hinweise enthält:

Für Touch-Aktionen und auch für die Interaktion spezifische oder Manipulation Ereignisse, die Folgen einer Berührungsaktion sind, muss ein Element Hit-Test wird sichtbar, um die Ereignisquelle zu sein und feuern Sie das Ereignis ab, das mit der Aktion verbunden ist. UIElement.Visibility muss Visible sein. Andere Eigenschaften abgeleiteter Typen wirken sich auch auf die Sichtbarkeit von Treffertests aus. Weitere Informationen finden Sie unter Events and routed events overview.

und die Details von Events and routed events overview: Hit testing and input events:

Es gibt mehrere Faktoren, die Tests getroffen Affekt, aber Sie können bestimmen, ob ein bestimmtes Element Eingabeereignisse, indem Sie ihre IsHitTestVisible Eigenschaft abfeuern kann. Diese Eigenschaft gibt wahr nur dann, wenn das Element diese Kriterien erfüllt:

  • Das Visibility Eigenschaftswert des Elements Visible ist.Füllen Sie Eigenschaftswert
  • Die Hintergrund oder des Elements ist nicht null. Ein null Brush Wert führt zu Transparenz und Unsichtbarkeit des Treffertests. (Um ein Element transparent zu machen, sondern auch testbar Treffer, verwenden eine Transparent Bürste anstelle von null.)

Die Grid ‚s Background property (geerbt von Panel) standardmäßig null, so dass das Gitter ohne a Hintergrund XAML-Attribut für Treffertests nicht sichtbar.

Verwandte Themen