2012-04-03 5 views
0

das ist mein XAML:Wie kann ich mit ListView.Item.CurrentItem arbeiten

<ListView Name="myListView" ItemsSource="{Binding ElementName=IndexPage, Path=SeriesCollection}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" IsSynchronizedWithCurrentItem="True" SelectionChanged="handleSelected"> 
    <ListView.ItemsPanel > 
     <ItemsPanelTemplate> 
      <WrapPanel> 
      </WrapPanel> 
     </ItemsPanelTemplate>    
    </ListView.ItemsPanel> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel > 
       <Image Width="214" Height="317" Source="{Binding Image}"/> 
       <Label Content="{Binding Name}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

und dies ist mein Code hinter

public void handleSelected(object sender, RoutedEventArgs args) 
    { 
     object currentSerie = myListView.Items.CurrentItem; 
     Console.WriteLine(currentSerie.GetType()); 
     Console.WriteLine(currentSerie.ToString()); 
    } 

Wie kann ich mit currentSerie arbeiten? Wie kann ich auf die Daten zugreifen, die in jedem Artikel gespeichert sind? Ich kann nicht auf Eigenschaften zugreifen und ich kann es in nichts anderes als Objekt konvertieren.

auch interessant, die Ausgabe des Codes ist nicht "Objekt", sondern "Serie", also ToString() und GetType() bekommt den Typ richtig.

thx für jede Hilfe

Antwort

0

Einfach currentSerie auf Serie tippen.

Series currentSerie = (Series)myListView.Items.CurrentItem; 
+0

das hat wie ein Zauber funktioniert, danke – braunbaer

0

Sie werfen Sie zum Objekt, so dass nur die Eigenschaften des Objekts erhalten. Cast ist eine echte benutzerdefinierte Klasse und Sie erhalten die Eigenschaften dieser Klasse. myClass currentSer =

+0

ich gieße überhaupt nicht (soweit ich weiß). wenn ein Änderungsobjekt currentSerie zu Serie currentSerie (meine benutzerdefinierte Klasse) bekomme ich "Compiler Error CS0266" -> "Kann Typ 'type1' nicht in 'type2'umwandeln. Eine explizite Konvertierung existiert (fehlt eine Besetzung?)" – braunbaer

+0

Ja Sie werfen "Objekt currentSerie" ist eine Besetzung. Casting zur eigentlichen Klasse ist meine Antwort und die Antwort, die du akzeptierst. – Paparazzi

+0

wie ist "object currentSerie" eine Besetzung? und wenn ja, warum muss ich Items.CurrentItem in myClass umwandeln, wenn es nicht vom Typ Objekt ist? – braunbaer

0

Wie wäre es mit casting es?

Series series = (Series)myListView.Items.CurrentItem; 
Verwandte Themen