当文本为空时,使用Textbox Textchanged Event模拟facebook搜索的问题

本文关键字:模拟 Event facebook 搜索 问题 Textchanged Textbox 文本 使用 | 更新日期: 2023-09-27 17:54:11

我试图模仿Facebook如何在每次输入一个键进入他们的搜索框时进行搜索。我目前面临的问题是,当我想要清除搜索框或当我试图手动删除所有文本时。它仍然触发默认文本(Search)作为搜索条目。非常感谢你的帮助,谢谢!

private void SearchTB_TextChanged(object sender, TextChangedEventArgs e)
  {
    int keyword_length = ((TextBox)sender).Text.Length;

    if (keyword_length == 0)
    {
      SearchTB.Text = "Search";
      myButton.Text = "Cancel";
     }
     //  When user starts to enter in text
     if (keyword_length > 0)
       {
         SearchTB.Text = "";
         myButton.Text = "Clear";
       }
     // Search when 3 chars has been entered into Searchbox
     if (keyword_length > 2)
       {
         keyword = ((TextBox)sender).Text;
         SearchBook(this.keyword);
        }
    }
private void myButton_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        if (myButton.Text == "Clear")
        {
           SearchTB.Text = "Search";
           myButton.Text = "Cancel";
        }
        else
        {
            if (cancelButton.Text == "Cancel")
            {
              Debug.WriteLine("This is cancel button");
            }
        }
    }

当文本为空时,使用Textbox Textchanged Event模拟facebook搜索的问题

正如我所看到的,您正在使用WPF(没有标记,但名称空间属于WPF),所以您可以在XAML:

中这样做:
<Grid>
    <TextBox x:Name="SearchTB" />
    <TextBlock x:Name="SearchBlock" Text="Search" IsHitTestVisible="False"
               VerticalAlignment="Center" />
</Grid>

代码

if (keyword_length == 0)
{
  SearchBlock.Visibility = Visibility.Visible;
  myButton.Text = "Cancel";
}
else
{
  SearchBlock.Visibility = Visibility.Hidden;
  myButton.Text = "Clear";
}

所以,你是隐藏文本块,这是不可点击的,因为IsHitTestVisible="False"和可见只有当搜索文本为空。