【问题标题】:Click on search bar icon in navigation bar to activate search bar in navigation bar using xamarin forms单击导航栏中的搜索栏图标以使用 xamarin 表单激活导航栏中的搜索栏
【发布时间】:2020-03-03 06:25:37
【问题描述】:

我尝试在导航栏中提供一个图标并为该图标提供一个点击事件。在单击图标时,我在 cs 文件中创建了一个新的搜索栏,但它不起作用

<TabbedPage.ToolbarItems>
        <ToolbarItem IconImageSource="search.png"
                     Clicked="ToolbarItem_Clicked"
                     Order="Primary"/>
 </TabbedPage.ToolbarItems>

private void ToolbarItem_Clicked(object sender, EventArgs e)
        {
            SearchBar searchBar = new SearchBar { Placeholder = "Search items..."};

        }

【问题讨论】:

  • 与其创建搜索栏,不如在点击事件中管理搜索栏的可见性/启用属性
  • 可以吗?

标签: xamarin events search xamarin.forms navigationbar


【解决方案1】:

虽然我赞同最好在 XAML 中添加搜索栏然后更新可见性的评论,但我想回答这个问题,因为它植根于缺乏经验的开发人员的常见误解。

与

private void ToolbarItem_Clicked(object sender, EventArgs e)
{
    SearchBar searchBar = new SearchBar { Placeholder = "Search items..."};
}

您创建SearchBar 类的实例。无论如何,这并不意味着它会自动添加到当前页面。虽然有可能以某种方式(至少在技术上)通过确定当前导航堆栈顶部的页面来将实例添加到当前页面,但出于多种原因,这并不是真正可取的

  • 从 OOP 的角度来看这是不直观的
  • 您可能需要准备视图并稍后添加它们
  • 您可能希望将视图添加到其他页面
  • 甚至不清楚在哪里在当前页面中添加视图。通常有多个地方可以添加一个视图。
  • ...

相反,您必须将SearchBar 添加到您的页面显式。具体如何取决于您的页面布局,但假设您有一个StackLayout

<StackLayout x:Name="StackLayout">
<!-- ... -->
</StackLayout>

你可以添加SearchBar

SearchBar searchBar = new SearchBar { Placeholder = "Search items..."};
StackLayout.Children.Add(searchBar);

请注意,这会将SearchBar 添加到StackLayout 的末尾。大概,您想将它添加到顶部,您可以使用

StackLayout.Children.Insert(0, searchBar); // insert searchBar at index 0

【讨论】:

    【解决方案2】:

    如果你想实现这个,你可以看看TitleView,你只需要将SearchBar添加到你的NavigationBar的TitleView。

    像下面这样使用:

    private void ToolbarItem_Clicked(object sender, EventArgs e)
        {
            SearchBar searchBar = new SearchBar { Placeholder = "Search items..." };
            NavigationPage.SetTitleView(this, searchBar);
    
        }
    

    【讨论】:

      猜你喜欢
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 2018-01-03
      相关资源
      最近更新 更多