【问题标题】:Multi Column listbox accessing the values [duplicate]访问值的多列列表框[重复]
【发布时间】:2012-06-28 20:51:54
【问题描述】:

可能重复:
WPF Listview Access to SelectedItem and subitems

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

<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());

【问题讨论】:

标签: c# wpf listbox


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 谢谢 Marc 我会研究 MVVM...
猜你喜欢
  • 1970-01-01
  • 2018-04-14
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多