对于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
}
}
答案 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;
}
然后你可以在任何你想要的地方使用它。