2017-06-06 11 views
0

Ich suchte im Internet über diese Frage, aber ich kann nicht Fortschritte in meiner UWP-Anwendung gemacht.Zugriff TextBlock Text in einem DataTemplate UWP

Ich habe ein ListView mit einem DataTemplate:

<ListView x:Name="lvEszTmplt" Margin="50,61,0,0" ItemClick="lvEszTmplt_ItemClick_1" SelectionChanged="lvEszTmplt_SelectionChanged_1" > 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Margin="0,8" x:Name="spItem" > 
        <TextBlock x:Name="tbAzonosito" > 
           <Run Text="Azonosító: " Foreground="DarkGray"/> 
           <Run Text="{Binding Azonosito}" 
            Foreground="DarkGray" 
            /> 

        </TextBlock> 
        <TextBlock x:Name="tbMegnevezes" > 
           <Run Text="Megnevezés: " Foreground="DarkGray"/> 
           <Run Text="{Binding Megnevezes}" 
            Foreground="DarkGray"/> 

        </TextBlock> 
        <TextBlock x:Name="tbSerial" > 
           <Run Text="Serial: " Foreground="DarkGray"/> 
           <Run Text="{Binding Serial}" 
            Foreground="DarkGray"/> 
        </TextBlock> 
        <TextBlock x:Name="tbSorszam" > 
           <Run Text="Sorszám: " Foreground="DarkGray"/> 
           <Run Text="{Binding Sorszam}" 
            Foreground="DarkGray"/> 
        </TextBlock> 

       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

Im ListView, die "Azonosító" ist eine ID-Spalte. Wenn ich auf ein Item klicke, sollte es zu einem anderen Frame gehen und die ID von der ListView nehmen, und die Deatails View mit den Daten von der ID laden.

Wie kann ich das tun?

Vielen Dank für Ihre Hilfe!

Antwort

3

Verwenden ItemClickEventArgs.ClickedItem Eigenschaft des ItemClick Ereignis das geklickt Artikel zu lesen:

private void lvEszTmplt_ItemClick_1(object sender, ItemClickEventArgs e) 
{ 
    var item = (ItemModel)e.ClickedItem; 
    var id = item.Azonosito; 
} 
+0

Es tut mir Leid, aber ich verstehe es nicht. Was ist "ItemModel"? – vlaszlo

+0

Ihr 'ListView' sollte an eine Sammlung von Objekten gebunden sein, wobei jedes Objekt ein Modell für ein Objekt ist, wie es in' DataTemplate' definiert ist. 'ItemModel' ist ein zusammengesetzter Klassenname von Objekten, die an die Listenansicht gebunden sind, und Sie sollten sie in Ihrer Anwendung ersetzen. –

+0

Jetzt verstehe ich! Vielen Dank! – vlaszlo

0

@Krzysztof Bracha haben eine gute answer.But Ich sehe Sie die Eigenschaft IsItemClickEnabled vergessen hinzuzufügen.

Sie können IsItemClickEnabled=true verwenden, um ItemClick zu aktivieren.

Und Sie sollten die Quellen an ListView binden.

Sie können auch x: bind verwenden, um die Daten zu binden.

Wenn der Typ Ihrer Quellen ObservableCollection ist, können Sie den Code als @Krzysztof Bracha verwenden.

Wenn Sie das Steuerelement in ListView erhalten, können Sie VisualTreeHelper.GetChild(DependencyObject reference, int childIndex); verwenden, um es zu erhalten.

Siehe: https://docs.microsoft.com/en-us/windows/uwp/data-binding/data-binding-in-depth

Verwandte Themen