0

可能重复:
WPF Listview 访问 SelectedItem 和子项

我有一个这样定义的列表视图:

<ListView Height="234.522" Name="chartListView" Width="260" SelectionChanged="chartListView_SelectionChanged" HorizontalAlignment="Left" Margin="251,38,0,38">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="op1" DisplayMemberBinding="{Binding op1}" Width="50"/>
                <GridViewColumn Header="op2" DisplayMemberBinding="{Binding op2}" Width="50"/>
                <GridViewColumn Header="op3" DisplayMemberBinding="{Binding op3}" Width="50"/>
                <GridViewColumn Header="op4" DisplayMemberBinding="{Binding op4}" Width="50"/>
                <GridViewColumn Header="op5." DisplayMemberBinding="{Binding op5}" Width="50"/>
            </GridView>
        </ListView.View>
    </ListView>

我使用以下内容添加数据:

chartListView.Items.Add(new { 
  op1 = "test1", op2 = "test2", op3 = "test3", op4 = "test4", op5 = "test5" });

如何访问选定的项目之一,以便我可以查看列具有的值(op3例如)?以下代码显示了所有值,但我只想查看op3.

MessageBox.Show(chartListView.SelectedItem.ToString());
4

1 回答 1

1

我建议使用MVVM 模式来将您的 UI 与底层逻辑连接起来。

在 Internet 上,您会找到大量有关 M* VVM 模式* 的信息和资源。

核心思想是拥有一个保存数据结构和变量的ViewModel (VM)。这些数据结构和变量是完全自主的,不依赖于 UI 层。从 VM 到 UI/ View (V) 的结构和变量的连接位于DataBindings中。

因此,您需要做的(在很短的时间内)将列表控件的 ItemSource 属性与一些底层数据结构连接起来(这里通常的结构是ObservableCollection - 阅读文献以找出原因)。

这是第一步。第二步可能是向ViewModel添加一个 object 类型的变量,该变量将保存列表中当前选定的项目。要完成这项工作,您只需将列表的SelectedItem - 属性与此变量连接。

从那时起,每当您在列表中选择一个项目时,您在视图中的变量都会保存它的值。

当然,这是非常简短且相当粗略的,但也许它让您产生了深入研究MVVM 模式的想法——这是经过深思熟虑的 ;)

于 2012-06-28T21:15:14.460 回答