0

我正在使用 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="★★★&quot; Icon="img_464925.png" ContentTemplate="{DataTemplate local:ItemsPage}" >
    <Button Text="SortByStars" StyleClass="MenuItemLayoutStyle" Clicked="OnSortByStarsClicked" />
</ShellContent>
4

0 回答 0