0
我对Windows 8 XAML/C#应用程序有一个相当直接的listview控件。我将ListView绑定到PersonList,并且工作正常。然而,我想要做的,一直没能找到答案是我想单击列表视图中的项目,并能够将PersonSingle对象显示在屏幕上的其他文本框中。ListView SelectItem绑定按预期工作
我读过一些帖子,指出listview可能不是这个操作的正确控件。我在我的列表视图中丢失了什么可以让我执行此操作的东西,还是应该使用其他控件?
<ListView
x:Name="itemListView"
Visibility="Visible"
Width="auto"
Height="auto"
ItemsSource="{Binding PersonList, Mode=TwoWay}"
SelectedItem = "{Binding PersonSingle, Mode=OneWay}"
ItemTemplate="{StaticResource person80Template}"
SelectionMode="Single"
Grid.Row="1"
Grid.Column="1"
VerticalAlignment="Stretch">
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Grid Margin="7,7,0,0">
<Button
AutomationProperties.Name="PersonValue"
Content="{Binding PersonName}"
Style="{StaticResource TextButtonStyle}"/>
</Grid>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
UPDATE:
所以我想通了,如何做到这一点在非MVVM方式(或者至少不是一个真正的MVVM方式)
我增加了一个项目单击事件我的ListView:
ItemClick="itemListView_ItemClick"
然后在后面的代码我增加了以下内容:
private void itemListView_ItemClick(object sender, ItemClickEventArgs e)
{
VM.PersonSingle = ((Person)e.ClickedItem);
}
这很有效,但就像我说的那样,它感觉不到MVVM'ish。如果您对如何使其无需手动设置PersonSingle对象有任何建议,请在下面回答。
您错过了尝试绑定到列表中选定项目的“虚拟机控制”(我正在猜测)。你也可以粘贴它 –