我的视图中有一个列表框,其中包含三个静态项(名称,年龄,性别),我希望我的ViewModel在选择ListBox中的项目时执行某些操作。我希望在没有任何代码隐藏的情况下使用MVVM模式执行此操作。
我的目标是在选择项目时导航到页面,上面列出的项目也不是来自可观察列表,而是在我的XAML中硬编码。我该怎么办?请教我。如果您不介意发送样品,那将是一个很大的帮助。非常感谢。
<ListBox x:Name="lbviewlist">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged" >
<Command:EventToCommand Command ="{Binding ViewCommand}"
PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<ListBox.Items>
<StackPanel x:Name="lbiview1" Orientation="Vertical">
<ListBoxItem Content="Name" FontSize="35" Margin="10,0,0,0"
Foreground="OrangeRed"/>
<TextBlock TextWrapping="Wrap" Text="View name of the patient"
FontSize="25" Margin="10,0,0,0" Foreground="White"/>
</StackPanel>
<StackPanel x:Name="lbiview2" Orientation="Vertical">
<ListBoxItem Content="Age" FontSize="35" Margin="10,20,0,0"
Foreground="OrangeRed"/>
<TextBlock TextWrapping="Wrap" Text="View age of the patient"
FontSize="25" Margin="10,0,0,0" Foreground="White"/>
</StackPanel>
<StackPanel x:Name="lbiview3" Orientation="Vertical">
<ListBoxItem Content="Gender" FontSize="35" Margin="10,20,0,0"
Foreground="OrangeRed"/>
<TextBlock TextWrapping="Wrap" Text="View the gender of the patient"
FontSize="25" Margin="10,0,0,0" Foreground="White"/>
</StackPanel>
</ListBox.Items>
</ListBox>
答案 0 :(得分:4)
您可以使用数据绑定将SelectedItem
的{{1}}绑定到视图模型上的属性。然后,在视图模型属性的setter中,您可以运行所选项目更改时所需的逻辑。
ListBox
<强>更新强>
好的,首先我强烈建议(不要坚持)你使用MVVM框架。 If you're doing MVVM, then you need to use a framework
接下来,没有理由为什么这些列表项不能出现在您的视图模型上。这肯定会让你的观点变得更加清晰。
然后,您可以将<ListBox SelectedItem="{Binding MySelectedItem}" ... />
ListBox
设置为绑定到视图模型集合,然后在视图中使用数据模板来一致地呈现列表中的每个项目。
E.g。你的观点最终会像:
ItemsSource
更干净,我想你会同意的。