Как получить выбранный элемент из AutoSuggestBox в Windows Phone 8.1

1

В CS файле "SelectedItem" не работает, что является альтернативой "SelectedItem" для AutoSuggestBox в WP8.1

В файле XAML:

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

В файле Cs:

 private void tblkpersonname_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
    {
        try
        {
            if (tblkpersonname.SelectedItem != null)
            {
                tblkdes.Text = ((values)tblkpersonname.SelectedItem).Description;
                persononlineimg.Source = new BitmapImage(new Uri(((values)tblkpersonname.SelectedItem).FlickrPersonImageUrl, UriKind.RelativeOrAbsolute));
            }
        }
        catch (Exception ex)
        {
            Exceptions.SaveOrSendExceptions("Exception in tblkpersonname_SelectionChanged_1 Method In AddCast.cs file.", ex);
        }
    }
Теги:
visual-studio-2013

2 ответа

0

Xaml

xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"

<AutoSuggestBox
    Text="{Binding EnteredAddress, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    ItemsSource="{Binding AddressAutoComplete}" 
    ItemTemplate="{StaticResource Autocomplete}" 
    TextMemberPath="name">
    <i:Interaction.Behaviors>
        <core:EventTriggerBehavior EventName="SuggestionChosen">
            <core:InvokeCommandAction Command="{Binding TextSearchChangedCommand}" CommandParameter="{Binding this}">
            </core:InvokeCommandAction>
        </core:EventTriggerBehavior>
    </i:Interaction.Behaviors>

ViewModel (Призма)

TextSearchChangedCommand = new DelegateCommand<Object>((Object) =>
{
    method(Object);
});

public void method(Object adr)
{
    AutoSuggestBoxSuggestionChosenEventArgs a = (AutoSuggestBoxSuggestionChosenEventArgs)adr;
    Address selected = (Address)a.SelectedItem;
}

Я провел целый день, чтобы понять это :-)

0

Там нет "SelectedItem" в AutoSuggestBox, поставляемом с Windows Phone 8.1, и ни один из них в средствах разработчика для Windows 10. AutoSuggestBox работает как обычный TextBox, единственным плюсом здесь является возможность иметь панель/всплывающее окно, которое отображает сообщения предложения, основанные на переданном вами ItemsSource. На самом деле это работает только в том случае, если ItemsSource представляет собой набор строк, поскольку DisplayMemberPath не работает, по крайней мере, для меня. Таким образом, единственный способ получить "SelectedItem" следует использовать свойство Text. Я знаю, что это не то же самое, но AutoSuggestBox это не ComboBox.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню