如何解决通过TabBar Xaml将参数从viewmodel传递到页面的ctor吗?
我正在使用Xamarin Form的Shell在页面底部创建三个选项卡。页面的其中之一正在接受一个参数,该参数可能来自Mainviewmodel(以前的设计是该页面的图标位于主屏幕中,我将PushAsync并通过ctor传递该参数,这很简单)。但是,由于我重新设计了应用程序以使用Shell和Tab,所以我不知道如何通过xaml从Mainviewmodel传递页面的ctor参数。
谢谢您的任何帮助。
<!--<ShellItem>
<ShellContent>
<pages:MainView/>
</ShellContent>
</ShellItem>-->
<TabBar>
<Tab Title="Main" Icon="mainscreen.png">
<ShellContent>
<pages:MainView/>
</ShellContent>
</Tab>
<Tab Title="News" Icon="googlenews.png">
<ShellContent>
<pages:NewsView/>
</ShellContent>
</Tab>
<Tab Title="Search" Icon="search.png">
<ShellContent>
<pages:SearchView> // need to pass this page an argument from Mainviewmodel
<x:Arguments>
<vm:Mainviewmodel ListViewItems=""></vm:Mainviewmodel>
</x:Arguments>
</pages:SearchView>
</ShellContent>
</Tab>
</TabBar>
public partial class SearchView : ContentPage
{
public SearchView(ObservableCollection<DailyIRD> dailyIrd)
{
InitializeComponent();
BindingContext = new Searchviewmodel(this,dailyIrd);
}
}
解决方法
我创建一个具有MainViewModel
属性的Title
进行测试。下面的方法很好用。
MainViewModel.cs
public class MainViewModel
{
public string Title { get; set; } = string.Empty;
public MainViewModel()
{
Title = "MainViewModel";
}
}
AppShell.xaml:
<Tab Title="Search" Icon="monkeyicon.png">
<ShellContent>
<local:SearchView>
<local:SearchView.BindingContext>
<vm:MainViewModel />
</local:SearchView.BindingContext>
<!-- // need to pass this page an argument from MainViewModel -->
<!--<x:Arguments>
<vm:MainViewModel Title="{Binding .}" />
</x:Arguments>-->
</local:SearchView>
</ShellContent>
</Tab>
SearchView.xaml:
<ContentPage.Content>
<StackLayout>
<Label
HorizontalOptions="CenterAndExpand"
Text="Welcome to SearchView!"
VerticalOptions="CenterAndExpand" />
<Label Text="{Binding Title}" />
</StackLayout>
</ContentPage.Content>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。