c# - 在标签中显示 ListView 行

标签 c# wpf listview

我在 WPF 中有一个 ListView,它正在从数据库中获取数据。我想要它,当我选择一列并按下一个按钮时,它将显示一行作为 label.content。这是我到目前为止所拥有的,但它不起作用(我从 atm 中删除了一些项目,如高度等):

<ListView x:Name="listView" HorizontalAlignment="Left" VerticalAlignment="Top">
        <ListView.View>
            <GridView>
                <GridViewColumn DisplayMemberBinding="{Binding Path=Item1}" Header="Item1"/>
                <GridViewColumn DisplayMemberBinding="{Binding Path=Item2}" Header="Item2"/>
                <GridViewColumn DisplayMemberBinding="{Binding Path=Item3}" Header="Item3"/>
            </GridView>
        </ListView.View>

然后在后面的代码部分:

    DataRowView dataRow;
    int indexInt;

    indexInt = listView.SelectedIndex;
    dataRow = listView.Items.GetItemAt(indexInt) as DataRowView;

    if(dataRow!=null)
    {
         labelOne.Content = (dataRow["Item2"]);
    }

如果我删除数据行!=null 检查,它将显示此错误: 对象引用未设置到对象的实例。

谁能帮我解决这个问题,还是我应该换一种方式解决这个问题?

最佳答案

您应该使用 MVVM 方法:

--> 你的 ListViewItemsSource 属性应该绑定(bind)到正在显示的集合。
--> (可选)您的 ListViewSelectedValue 属性应该绑定(bind)到您的 ViewModel 中的属性,我们称它为 CurrentRow
--> labelOneContent 属性应该绑定(bind)到 CurrentRow(或者 listView.SelectedValue.Item2 如果你没有做可选步骤)

而且您不必再通过代码修改 UI 元素(这通常是不良做法的标志)。
事实上,您可能也不再需要为控件命名。

它应该是这样的:

<Label name="labelOne" Content="{Binding SelectedValue.Item2, ElementName=listView}" />
<ListView x:Name="listView" HorizontalAlignment="Left" VerticalAlignment="Top">
        <ListView.View>
            <GridView>
                <GridViewColumn DisplayMemberBinding="{Binding Path=Item1}" Header="Item1"/>
                <GridViewColumn DisplayMemberBinding="{Binding Path=Item2}" Header="Item2"/>
                <GridViewColumn DisplayMemberBinding="{Binding Path=Item3}" Header="Item3"/>
            </GridView>
        </ListView.View>

关于c# - 在标签中显示 ListView 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16816858/

相关文章:

c# - 为什么这个 UWP Binding to decimal property 不能正常工作?

C#/WPF : Idea how to display the last row of a ListView separately?

c# - 为什么我的 WPF 翻译动画在完成之前就停止了?

WPF Datagrid 列宽度在列表框中失败

android - 是否可以使用 SimpleCursorAdapter 格式化 double 型?

c# - .Net/C# 中推荐的多线程书籍?

c# - Entity Framework 。计算数据库命中

c# - 在ViewModels之间共享observableCollection

android - CheckBox 使 listView 项目不可点击

java - Android ListView显示位置错误