2012-09-25 33 views
2

我寫了一個ListView的foreach在所有listViewItems

<ListView 
    SelectionChanged="MySelectionChanged" 
    ScrollViewer.CanContentScroll="False" 
    Background="Transparent" 
    x:Name="uiListView" 
    ItemTemplate="{StaticResource ItemTemplate}" 
    ItemsSource="{Binding Albums}" 
    Width="117" 
    Height="Auto" 
    BorderThickness="0" 
    ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
    ScrollViewer.VerticalScrollBarVisibility="Hidden" /> 

並將其綁定到

public class ListImage 
{ 
    public ListImage(string cover, string title, string isvideo) 
    { 
     Cover = cover; 
     Title = title; 
     isVideo = isvideo; 

    } 

    public string Cover { get; set; } 
    public string Title { get; set; } 
    public string isVideo { get; set; } 
} 

林添加項目是這樣的:

uiListView.Items.Add(new ListImage(@"C:\tablet\3kings_full.jpg", @"Title", "false")); 
uiListView.Items.Add(new ListImage(@"C:\tablet\3kings_full.jpg", @"Title", "true")); 
uiListView.Items.Add(new ListImage(@"C:\tablet\3kings_full.jpg", @"Title", "false")); 
uiListView.Items.Add(new ListImage(@"C:\tablet\3kings_full.jpg", @"Title", "true")); 
uiListView.Items.Add(new ListImage(@"C:\tablet\3kings_full.jpg", @"Title", "false")); 
uiListView.Items.Add(new ListImage(@"C:\tablet\3kings_full.jpg", @"Title", "true")); 
uiListView.Items.Add(new ListImage(@"C:\tablet\3kings_full.jpg", @"Title", "false")); 
uiListView.Items.Add(new ListImage(@"C:\tablet\3kings_full.jpg", @"Title", "true")); 
uiListView.Items.Add(new ListImage(@"C:\tablet\3kings_full.jpg", @"Title", "false")); 
uiListView.Items.Add(new ListImage(@"C:\tablet\3kings_full.jpg", @"Title", "true")); 

一切都很好。我現在需要訪問單擊元素的ListViewItem所以

private void MySelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    MessageBox.Show(uiListView.Items[uiListView.SelectedIndex].GetType().ToString()); 
} 

但是,這返回ListImage類型而不是ListViewItem。我如何訪問它?

問候

+2

這就是WPF的工作原理,如果它不是ListImage,你想訪問什麼? –

+0

你想用listViewItem做什麼?可能有另一種方法來實現它。 – AlSki

回答

1

您可以使用ListBox.ItemContainerGenerator,或者更可能的是,改變你的方法。您可能會使用ListBox.ItemContainerStyle屬性來設置您需要的ListBoxItem上的屬性。

+0

它的工作原理,謝謝 – user1697180

0

user1697180,我想知道你是否來自WinForms背景?

WPF是更具貶值性的,至少在XAML中,我發現在製作開關時,你必須以不同的方式思考事情。

我注意到你有兩個綁定到一個項目源,然後你是單獨提供項目。項目源應該是你的項目集合,所以你不需要將它們添加到項目中。另外,你通常在你的item上使用一些屬性,這些屬性綁定到你想要在你的listViewItem上的任何屬性,所以你永遠不需要訪問這個item本身。