我有一个从mysql表填充的列表视图,我希望能够双击列表视图中的项目并打开一个包含更多信息的新窗口。如何将第一列值传递给新窗口(这是项目的ID)?这样我可以进行另一个查询以获取有关该项目的其余信息。
答案 0 :(得分:1)
与ListBox有类似的问题想要打开一个窗口(不同的视图),其中SelectedItem作为上下文(在我的情况下,所以我可以编辑它)。
我发现的三个选项是: 1.代码背后 2.使用附加行为 3.使用Blend的i:使用MVVM-Light进行交互和EventToCommand。
我选择了第3个选项,它看起来像这样:
<ListBox x:Name="You_Need_This_Name"
ItemsSource="{Binding Your_Collection_Name_Here}"
SelectedItem="{Binding Your_Property_Name_Here, UpdateSourceTrigger=PropertyChanged}"
... rest of your needed stuff here ...
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<Command:EventToCommand Command="{Binding Your_Command_Name_Here}"
CommandParameter="{Binding ElementName=You_Need_This_Name,Path=SelectedItem}" />
</i:EventTrigger>
</i:Interaction.Triggers>
就是这样...当你双击你想要的项目时,你将使用SelectedItem作为参数调用ViewModel上的方法,你可以在那里做任何你想做的事情:)
答案 1 :(得分:0)
MVVM的含义是,您将拥有一个ViewModel,它包含绑定到listview的SelectedItem的属性SelectedThing,以及一个在View的MouseDoubleClick事件中使用EventCommand执行的命令,该事件将在最后执行您想要在SelectedThing上执行的操作,也可以通过绑定将其作为参数传递给命令。