簡體   English   中英

Xamarin 表單工具欄項目未顯示在視圖中

[英]Xamarin forms toolbar items not displaying on view

我有許多視圖頁面,它們都繼承自 ContentPage。 從 app.cs 調用的第一個頁面在工具欄中正確顯示圖標。 第二頁(TodoItemView)根本不顯示圖標(使用相同的代碼)。 我需要做些什么來初始化第二個視圖的工具欄?

提前致謝。

This page is called by the following code:

      var todoList = new TodoListView();
      return new NavigationPage(todoList);

Th page is called by the following code:

      var todoList = new TodoListView();
      return new NavigationPage(todoList);




// Works shows refresh icon
public class TodoListView : ContentPage
    {
        public TodoListView ()
        {
            Title = "Social Events";

            // Display the refresh icon
            var toolbarItem = new ToolbarItem ("Refresh", "refresh.png", ()=>{
            }, 0, 0);
            ToolbarItems.Add (toolbarItem);

            var list = new ListView ();
            var viewModel = new TodoListViewModel ();
            list.ItemsSource = viewModel.TodoList;

            var cell = new DataTemplate (typeof(AspectImageCell));
            cell.SetBinding (TextCell.TextProperty, "Name");
            cell.SetBinding (TextCell.DetailProperty, "Details");
            cell.SetBinding (ImageCell.ImageSourceProperty, "Image");
            list.ItemTemplate = cell;
            list.ItemTapped += (sender, args) => {


                Navigation.PushAsync (new NavigationPage(new TodoItemView ()));

                // Reset the selected item
                list.SelectedItem = null;
            };

            Content = list;
        }
    }

// Does not work, does not show icon
public class TodoItemView : ContentPage
    {
        public TodoItemView ()
        {
            Title = "Todo item";

            var toolbarItem = new ToolbarItem ("Send", "send.png", ()=>{

                // email todo item

            }, 0, 0);
            ToolbarItems.Add (toolbarItem);
         }
}

如果您的應用沒有工具欄,您的 ToolbarItems 將不會顯示。 添加一個最簡單的方法是將您的頁面包裝在NavigationPage

public static Page GetMainPage ()
{   
    return new NavigationPage(new SamplePage ());
}

您只需為每個導航堆棧創建一次 NavigationPage。 當您推送 TodoItemView 時,請改為執行以下操作:

list.ItemTapped += (sender, args) => {
  Navigation.PushAsync (new TodoItemView ());
  // Reset the selected item
  list.SelectedItem = null;
};

TodoItemView 將被推送到已經包含在第一個 NavigationPage 中的導航堆棧上。 消除額外的 NavigationPage 也可能會修復您丟失的工具欄項目。 如果不是,還要驗證您指定的工具欄圖標是否有效。

添加一個最簡單的方法是將您的頁面包裝在一個NavigationPage對象中,然后像這樣調用它:

var testPage = new NavigationPage(new TestPage());
Navigation.PushAsync(testPage);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM