我最近開始使用Prism構建一個Xamarin Forms應用程序。使用棱鏡的MasterDetail導航
我無法使用MasterDetail導航進行導航。我用來導航的按鈕似乎不能正確地進行綁定。點擊按鈕時,我從來沒有能夠用斷點達到執行的命令。 除了命令綁定之外的所有東西似乎都正確地進行了綁定,所以我真的不知道發生了什麼。
我已經檢出了Prism團隊提供的GitHub示例(HamburgerMenu項目)。我說服使用與示例完全相同的配置,但沒有辦法使其適用於我的項目。
波紋管是目前使用的代碼:
MainPage.xaml中
<MasterDetailPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MonkeyVault.Views.MainPage">
<MasterDetailPage.Master>
<NavigationPage Title="Required Foo" Icon="ic_menu.png">
<x:Arguments>
<ContentPage Title="Menu">
<StackLayout Padding="40">
<Label Text="{Binding UserName, StringFormat='Hello, {0}'}"/>
<Button Text="Sites" Command="{Binding NavigateCommand}" CommandParameter="Navigation/Sites" />
</StackLayout>
</ContentPage>
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Master>
</MasterDetailPage>
MainPageViewModel.cs
public class MainPageViewModel : BaseViewModel
{
#region Fields
private string _userName;
#endregion
#region Properties
public string UserName
{
get => _userName;
set => SetProperty(ref _userName, value);
}
public DelegateCommand<string> NavigateCommand;
public DelegateCommand NCommand;
#endregion
public MainPageViewModel(INavigationService navigationService)
: base(navigationService)
{
Title = "Main Page";
NavigateCommand = new DelegateCommand<string>(OnNavigateCommandExecuted);
}
private async void OnNavigateCommandExecuted(string path)
{
await _navigationService.NavigateAsync(path);
}
}
如果有人已經遇到了這個問題或有任何想法,我將不勝感激。
不是我對Prism太熟悉了,但是如何使用MasterDetailPage創建BIndingContext。在MasterDetailPage中,主節和細節節都應將其BIndingContext設置爲適當的ViewModel。 –
@AdamPedley該視圖通過命名約定自動連接到視圖模型,允許將數據綁定到視圖模型。它的工作原理是,'UserName'屬性上的綁定按照默認方式工作,只有命令綁定不會被觸發,我不知道爲什麼。 – BrassMonkey