gpt4 book ai didi

c# - 在 Xamarin Forms 中从 ViewModel 绑定(bind) MasterDetailPage

转载 作者:行者123 更新时间:2023-11-30 12:39:23 26 4
gpt4 key购买 nike

我正在尝试从 View 模型绑定(bind)我的 masterdetailpage 详细信息。但它不起作用。

这是我的代码:

<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:MasterDetailsSamp1"
x:Class="MasterDetailsSamp1.MainPage"
xmlns:vm="clr-namespace:MasterDetailsSamp1.ViewModels">
<MasterDetailPage.BindingContext>
<vm:MasterDetailsViewModel/>
</MasterDetailPage.BindingContext>

<MasterDetailPage.Master>
<ContentPage Title="Menu">
<StackLayout>

</StackLayout>
</ContentPage>
</MasterDetailPage.Master>

<MasterDetailPage.Detail>
<NavigationPage>

</NavigationPage>
</MasterDetailPage.Detail>

这是我的 View 模型中的代码

public MasterDetailsViewModel()
{
MasterDetailPage masterDetailPage = new MasterDetailPage
{
Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(HomePage)))
};
}

当我输入这行代码时它正在工作

Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(HomePage)))

在代码后面,但我想从 View 模型中实现它。

请帮忙。提前谢谢你

最佳答案

您需要在您的 Master 上添加绑定(bind)上下文和类似的细节:

<?xml version="1.0" encoding="UTF-8" ?> 
<MasterDetailPage
xmlns="http://xamarin.com/schemas/2014/forms"
x:Class="MasterDetailExample.Main"
Title="Master Detail Example">

<MasterDetailPage.Master>
<ContentPage Padding="5, 25" BindingContext="{Binding Menu}" Title="Master">
<StackLayout Orientation="Vertical">
<Label Text="Master" HorizontalOptions="Center" />
<Label Text="{Binding Subtitle}" HorizontalOptions="Center" />
</StackLayout>
</ContentPage>

</MasterDetailPage.Master>

<MasterDetailPage.Detail>
<ContentPage>
</ContentPage>
</MasterDetailPage.Detail>
</MasterDetailPage>

要在 ViewModel 中更改您的详细信息页面,我使用这个:

(Application.Current.MainPage as MasterDetailPage).Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(YOURDETAILPAGE)));

我不确定这是否是完成这项工作的最佳方式,MVVM 和 MasterDetail 文档需要澄清。

不要忘记您的绑定(bind)上下文项需要实现 INotifyPropertyChanged 才能工作。

希望这对您有所帮助。

关于c# - 在 Xamarin Forms 中从 ViewModel 绑定(bind) MasterDetailPage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46529055/

26 4 0
文章推荐: c# - 使用 Selenium 使用 WindowHandles 跟踪和遍历选项卡和窗口的最佳方法
文章推荐: c# - `ICommand.CanExecuteChanged`应该如何实现?
文章推荐: c# - 有时 List 上的 Model Binder null