我最近开始使用Prism构建一个Xamarin Forms应用程序。
我无法使用MasterDetail导航进行导航。我用来导航的按钮似乎没有正确绑定。单击按钮时,我无法通过断点访问已执行的命令。 除了命令绑定之外的所有东西似乎都正确地进行了绑定,所以我真的不知道发生了什么。
我已经检查了Prism团队(HamburgerMenu项目)提供的GitHub样本。我说服使用与样本完全相同的配置,但无法使其适用于我的项目。
Bellow是目前使用的代码:
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);
}
}
如果某人已经遇到过这个问题,或者有任何想法我会很高兴。
答案 0 :(得分:0)
您需要将DelegateCommand创建为Property。
public DelegateCommand<string> NavigateCommand { get; set; }
不可否认我只是在这里猜测,但我之前遇到过与Fields绑定的问题,需要将其更改为属性才能获得绑定。