2

我写了一个listView

<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。我怎样才能访问它?

此致

4

2 回答 2

1

您可以使用ListBox.ItemContainerGenerator或者更有可能改变您的方法。您可能会使用该ListBox.ItemContainerStyle属性来设置ListBoxItem您需要的属性。

于 2012-09-25T12:09:54.710 回答
0

user1697180,不知道你是不是有WinForms背景的?

WPF 更具声明性,至少在 XAML 中是这样,我发现在进行切换时,您必须以不同的方式思考问题。

我注意到你们都绑定到一个物品来源,然后你单独提供物品。项目源应该是您的项目集合,因此您也不需要将它们添加到项目中。

此外,您通常在您的项目上使用一些属性,该属性绑定到您想要在 listViewItem 上的任何属性,因此您永远不需要访问项目本身。

于 2012-09-25T12:35:11.843 回答