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