2017-08-01 55 views
0

我试图从建议选择事件中的代码背后设置自动建议框的文本,但通过这样做,我的建议列表正在关闭,如果我直接将文本设置为模型名称,则建议列表未关闭。如何在建议选择的事件中设置来自c#的自动建议框的文本?

我想将自动提示框文本设置为模型属性,但列表正在关闭,如果我这样做,我不想关闭此事件的建议列表。

另一方面,如果我设置文本作为直接的模型名称,那么列表不会闭合。我真的变得非常困惑,使其工作。

建议选的事件:

private void recipient_SuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args) 
    { 
     var getType = args.SelectedItem.GetType(); 
     if (getType.Name == "Table_People") 
     { 
      var selectedItemRecipient = args.SelectedItem as Table_People; 
      //By doing this the list is getting closed. 
      sender.Text = selectedItemRecipient.FirstName + " " + selectedItemRecipient.LastName; 
      recipienterror.Visibility = Visibility.Collapsed; 
      _personID = selectedItemRecipient.PersonID; 
     } 
     else 
     { 
      var selectedItemRecipientPlaces = args.SelectedItem as Table_Places; 
      _placeID = selectedItemRecipientPlaces.PlaceID; 
      //By doing this the list is getting closed. 
      sender.Text = selectedItemRecipientPlaces.FirstName + " " + selectedItemRecipientPlaces.LastName; 
      recipienterror.Visibility = Visibility.Collapsed; 
     } 

    } 

在此先感谢。

+1

润版液的解决方案:在XAML代码中,我们需要设置TextMemberPath(模型的属性),最后设置QuerySubmitted event.No文本需要设置SuggestionChosen事件的文本。 – tushargoyal1309

回答

1

由于tushargoyal1309表示您可以设置TextMemberPath属性来选择要在文本框中显示的数据对象的属性。欲了解更多信息,请参阅AutoSuggestBox类正式文件。

<AutoSuggestBox 
    x:Name="asb" 
    PlaceholderText="Type a name (e.g. John)" 
    DisplayMemberPath="DisplayName" 
    TextChanged="asb_TextChanged"    
    TextMemberPath="DisplayName" 
    QueryIcon="Find"/>