使用MVVM命令使用Listbox的静态项

时间:2013-04-22 04:03:38

标签: wpf xaml mvvm listbox selecteditem

我的视图中有一个列表框,其中包含三个静态项(名称,年龄,性别),我希望我的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>

1 个答案:

答案 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

更干净,我想你会同意的。