2012-04-03 30 views
0

工作,這是我的XAML:我如何與ListView.Item.CurrentItem

<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> 

,這背後是

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

我怎樣currentSerie工作我的代碼?我如何訪問存儲在每個項目中的數據?我不能訪問屬性,我不能將它轉換爲任何其他對象。

也有趣的是,代碼的輸出不是「對象」而是「系列」,所以ToString()和GetType()的類型是正確的。

thx任何幫助

回答

0

只需將currentSerie投射到Series系列。

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

這工作就像一個魅力,thx – braunbaer 2012-04-03 16:21:25

0

您正在轉換爲對象,因此您只能獲取對象的屬性。演員是一個真正的自定義類,你會得到該類的屬性。 myClass currentSer =

+0

我根本沒有鑄造(據我所知)。如果更改對象currentSerie到Serie currentSerie(我的自定義類),我會得到「編譯器錯誤CS0266」 - >「不能隱式地將類型'type1'轉換爲'type2'。存在明確的轉換(是否缺少演員?」) – braunbaer 2012-04-03 16:19:26

+0

是你正在投射「對象currentSerie」是個演員。投到實際的課堂上是我的回答和你接受的答案。 – Paparazzi 2012-04-03 19:27:54

+0

「對象currentSerie」如何投射?如果是這樣,爲什麼我必須將Items.CurrentItem轉換爲myClass,如果它不是來自類型對象? – braunbaer 2012-04-03 21:04:07

0

casting怎麼樣?

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