AutoSuggestBox.SelectedItem 不工作

AutoSuggestBox.SelectedItem is not working

对于 AutoSuggestBox 所选项目在 _SuggestionChosen 事件中启用,但在 "getitemselected()" 方法中所选项目在 WP8.1 中不起作用。

在 XAML 文件中:

<AutoSuggestBox x:Name="tblkpersonname" Width="380" Margin="0,-7,0,0" ItemsSource="{Binding}" SuggestionChosen="tblkpersonname_SuggestionChosen">
      <AutoSuggestBox.ItemTemplate>
           <DataTemplate>
               <TextBlock Text="{Binding Name}"
                          Tag="{Binding PersonID}"/>
           </DataTemplate>
      </AutoSuggestBox.ItemTemplate>
</AutoSuggestBox>

在 Cs 文件中:

private void tblkpersonname_SuggestionChosen(AutoSuggestBox sender,   AutoSuggestBoxSuggestionChosenEventArgs args)
   {
     System.Diagnostics.Debug.WriteLine("Suggestion chosen : {0}", ((values)args.SelectedItem).Name);         
   }

public void getitemselected()
    {
     //Error in this line when select item from AutoSuggestBox
     //Here values is the one of the class
      if (((values)tblkpersonname.SelectedItem) != null)
       {
          //Some Statements
       }
    }

AutoSuggestBox 没有 属性 SelectedItem - 你可以阅读 Text 属性 如果你想。

但是,如果您想知道从建议中选择了哪个元素,您可以从事件 SuggestionChosen 中的参数中读取它,您已经在做什么。你只需要将它传递给你的方法。例如像这样:

private void tblkpersonname_SuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)
{
    System.Diagnostics.Debug.WriteLine("Suggestion chosen : {0}", ((values)args.SelectedItem).Name);
    getitemselected(args.SelectedItem as values);
}

public void getitemselected(values selectedItem)
{
    if ((selectedItem) != null)
    {
        //Some Statements
    }
}

编辑 - 在 OP 的编辑和评论之后

您还可以将所选项目保存在变量中:

values selectedItem = null;

private void tblkpersonname_SuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)
{
    System.Diagnostics.Debug.WriteLine("Suggestion chosen : {0}", ((values)args.SelectedItem).Name);
    selectedItem = args.SelectedItem as values;
}

然后你就可以在任何地方使用它了。