C# 在标签中显示ListView行

C# 在标签中显示ListView行,c#,wpf,listview,C#,Wpf,Listview,我在WPF中有一个从数据库获取数据的ListView。我希望,当我选择一列并按下按钮时,它将显示一行作为label.content。以下是迄今为止我所拥有的,但它不起作用(我从中删除了一些项目,如高度等): 如果我删除数据行=空检查,将显示此错误: 对象引用未设置为对象的实例 有人能帮我解决这个问题吗?或者我应该用另一种方法解决吗?您应该使用MVVM方法: -->您的ListView的ItemsSource属性应绑定到正在显示的集合。 -->(可选)您的列表视图的SelectedValue属性应

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

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


有人能帮我解决这个问题吗?或者我应该用另一种方法解决吗?

您应该使用MVVM方法:

-->您的
ListView
ItemsSource
属性应绑定到正在显示的集合。
-->(可选)您的
列表视图
SelectedValue
属性应该绑定到ViewModel中的属性,我们称之为
CurrentRow

-->
labelOne
内容
属性应绑定到
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>

我不得不说,哇。。。这太简单了,我花了大约4个小时的时间在谷歌上搜索(尝试不同的方法),当我最终来到这里时,我得到了答案,答案就这么简单!:)多谢各位!
    DataRowView dataRow;
    int indexInt;

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

    if(dataRow!=null)
    {
         labelOne.Content = (dataRow["Item2"]);
    }
<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>