AutoSuggestBox.SelectedItem无效

时间:2015-04-07 08:44:01

标签: c# windows-phone-8.1

对于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
       }
    }

1 个答案:

答案 0 :(得分:2)

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;
}

然后你可以在任何你想要的地方使用它。