我正在使用 Visual Studio 2019 在 Windows 10 上进行开发。我想知道如何传递ShellContent
参数。我正在使用 Xamarin.Forms (v5.0.0.2012) 和 Xamarin.Essentials (v1.6.1) 构建应用程序。
我们正在使用标签页模板。在AppShell.xaml
标签栏中,我想将参数传递给同一页面 ( ItemsViewModel
)。具体来说。
RegistDate
将字符“RegistDate”传递给ItemsPage
.ExecuteDate
将字符“ExecuteDate”传递给ItemsPage
.Stars
将“星星”一词传递给ItemsPage
.
AppShell.xaml
<TabBar>
<ShellContent Title="About" Icon="icon_about.png" Route="AboutPage" ContentTemplate="{DataTemplate local:AboutPage}" />
<ShellContent Title="Browse" Icon="icon_feed.png" ContentTemplate="{DataTemplate local:ItemsPage}" />
<ShellContent Title="BrowseByRegistDate" Icon="registrationicon.png" ContentTemplate="{DataTemplate local:ItemsPage}" />
<ShellContent Title="ExecuteDate" Icon="execute.png" ContentTemplate="{DataTemplate local:ItemsPage}" />
<ShellContent Title="SortByStars" Icon="star.png" ContentTemplate="{DataTemplate local:ItemsPage}" />
</TabBar>
在 中ItemsPageViewModel
,将 args 添加到构造函数。
public ItemsViewModel(string args ="")
{
Title = "Browse "+ args;
// Processing for each args below.
}
我需要向哪个 xaml 文件或 C# 文件添加什么?
该过程的目标如下。(1)BrowseByRegistDate 按注册日期排序显示文件列表。(2)ExecuteDate 按执行日期排序显示文件列表。(3) SortByStars 按重要性排序显示文件列表。
public ObservableCollection<Item> Items { get; }
public ItemsViewModel(string args)
{
Title = "Browse "+args;
Items = new ObservableCollection<Item>();
if (args=="RegistDate")
Items.SortByRegistDate();
else if (args=="ExecuteDate")
Items.SortByExecuteDate();
else if (args=="Stars")
Items.SortByStars();
SortByStars(); }
例如,这是我尝试过的代码;单击的按钮不起作用。
<ShellContent Title="★★★" Icon="img_464925.png" ContentTemplate="{DataTemplate local:ItemsPage}" >
<Button Text="SortByStars" StyleClass="MenuItemLayoutStyle" Clicked="OnSortByStarsClicked" />
</ShellContent>