我有一个从 mysql 表填充的列表视图,我希望能够双击列表视图中的一个项目并打开一个包含更多信息的新窗口。如何将第一列值传递到新窗口(这是项目的 id)?这样我可以进行另一个查询以获取有关该项目的其余信息。
问问题
1773 次
2 回答
1
与想要打开一个以 SelectedItem 作为上下文的窗口(不同视图)的 ListBox 有类似的问题(在我的情况下,所以我可以编辑它)。
我发现的三个选项是: 1. 隐藏代码 2. 使用附加行为 3. 使用 Blend 的 i:Interaction 和 EventToCommand 使用 MVVM-Light。
我选择了第三个选项,它看起来像这样:
<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>
就是这样......当您双击所需的项目时,您在 ViewModel 上的方法将以 SelectedItem 作为参数调用,您可以在那里做任何您想做的事情:)
于 2013-10-08T08:59:51.700 回答
0
MVVM 的含义是,例如,您将拥有一个 ViewModel,其中包含一个绑定到列表视图的 SelectedItem 的属性 SelectedThing,以及一个在 View 的 MouseDoubleClick 事件上使用 EventCommand 执行的命令,该事件将在最后执行您想要的操作在 SelectedThing 上,它也可以通过绑定作为参数传递给命令。
于 2013-09-18T16:24:37.320 回答