如何使用MVVM在WP 8.1中使用Button的Command属性导航到另一个页面?

时间:2014-12-18 07:18:17

标签: c# xaml mvvm windows-phone-8.1 mvvm-light

我有一个ListView&其中的每个列表项都是一个包含图像的按钮。点击按钮后我试图导航到另一个页面(比如。,page2.xaml) 我正在使用MVVM光框架。

这是我的XAML:

  <ListView  Grid.Row="1" Grid.ColumnSpan="2" 
             Visibility="Visible"
             ItemsSource="{Binding buttonLists}" >
        <ListView.ItemTemplate>
            <DataTemplate>
                <Button Style="{StaticResource ImageButton}" Command="{Binding GoToCommand}">
                    <Grid Style="{StaticResource GridItem}" Background="Blue">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*"></RowDefinition>
                            <RowDefinition Height="Auto"></RowDefinition>
                        </Grid.RowDefinitions>
                        <Image Source="{Binding imageSource}"></Image>
                    </Grid>
                </Button>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

在我的ViewModel中,在我给出的类中,

    public ICommand GoToCommand
    {
        get
        {
            return new RelayCommand(GoToCommand);
        }
    }

private readonly INavigationService gotoNavigationService;

    private void GoToCommand()
    {

    }

GoToCommand()中应该给出什么导航命令?我对RelayCommand不太熟悉。感谢。

2 个答案:

答案 0 :(得分:1)

最后我发现了一个解决方案。奖励。

当我使用MVVM时,我必须包含这两个。

using GalaSoft.MvvmLight.Command;
using GalaSoft.MvvmLight.Ioc;

在课堂上,我对方法进行了以下更改:

    private void GoTo()
    {
        var navigationService = SimpleIoc.Default.GetInstance<INavigationService>();
        navigationService.NavigateTo<Page2>(null);
    }

    public ICommand GoToCommand
    {
        get
        {
            return new RelayCommand(GoTo);
        }
    }

钽哒!有用。我可以导航到Page2.xaml

答案 1 :(得分:0)

也许您正在寻找:

Page Navigation using MVVM in Store App

它适用于Store App,但概念非常相似