2013-03-07 52 views
0

我正在開發一個WinRT應用程序,我正在嘗試使用一個按鈕命令。ICommand with navigation

public class addCommand : ICommand 
{ 
    private async Task AddNewVehicle() 
    { 
     vvm VM = new vvm(); 
     await VM.AddNewVehicleInfo(); 
    } 

public bool CanExecute(object parameter) 
{ 
    return true; 
} 

public event EventHandler CanExecuteChanged; 

public void Execute(object parameter) 
{ 
    AddNewVehicle(); 

} 

}

的AddNewVehicle()方法之後被調用,完成我想要移動到我的詳細信息頁面。在單擊事件我有這樣的事情:

this.Frame.Navigate(typeof(VehicleItemDetailPage), 0); 

然而,當我添加到我的命令,我得到錯誤,它不知道什麼Frame是。

命令執行後,如何導航到我的詳細信息頁面?

更新XAML代碼:

<Button x:Name="addButton" Style="{StaticResource AddAppBarButtonStyle}" Command="{Binding AddCommand}" CommandParameter="{Binding ElementName=Frame}"/> 

回答

1

您可以通過幀字段Execute參數。例如。

<Button Command="{Binding CommandName,CommandParameter={Binding ElementName=Frame}}"/> 

之後,你只投parameterFrame,並根據需要使用它。

+0

winRT它看起來有一點不同的語法。我添加了一個CommandParameter,如下所示:Command =「{Binding AddCommand}」CommandParameter =「{Binding ElementName = Frame}」但是,當我進入命令代碼時,參數仍爲空。 – webdad3 2013-03-07 11:35:02

+2

@JeffV:ElementName需要一個x:Name屬性值。因此「名稱」。您的可視化樹中的某些UIElement具有Frame屬性。命名它,然後從綁定中引用它。 – Will 2013-03-07 15:16:37

+0

@我會在我的按鈕元素上添加一個x:Name =「addButton」,我會得到相同的結果。那是你所指的? – webdad3 2013-03-17 14:35:01

3

我只想叫

((幀)Window.Current.Content).Navigate(typeof運算(VehicleItemDetailPage),0);

而不是this.Frame和Thing,從XAML傳遞任何您不需要的參數。由於框架是靜態的。所以你不需要當前在代碼中啓動的View實例。