Autosuggestbox 不显示结果 WP8.1 Universal App

Autosuggestbox not displaying results WP8.1 Universal App

autosuggestbox 中的结果模板没有显示,我不知道为什么。我在应用程序中使用 MVVM Light。让我们来看看代码:)

在页面中:

<AutoSuggestBox x:Name="txtBusqueda" x:Uid="txtBusqueda" 
        ItemsSource="{Binding Lugares}"
        Grid.Row="1" Margin="24 24 24 12" 
        MaxSuggestionListHeight="4" AutoMaximizeSuggestionArea="True" 
        TextMemberPath="Nombre"
    >
    <i:Interaction.Behaviors>
            <core:EventTriggerBehavior EventName="TextChanged">
                <core:InvokeCommandAction Command="{Binding ChangeTextCommand}" CommandParameter="{Binding Text, ElementName=txtBusqueda}" />
            </core:EventTriggerBehavior>
        </i:Interaction.Behaviors>
        <AutoSuggestBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Nombre}" TextWrapping="Wrap" />
            </DataTemplate>
        </AutoSuggestBox.ItemTemplate>
    </AutoSuggestBox>

在虚拟机中:

private List<LugarInfo> lugares;
public List<LugarInfo> Lugares
{
    get { return this.lugares; }
    set
    {
        if (this.lugares == value) return;
        this.lugares = value;
        RaisePropertyChanged(() => Lugares);
    }
}
public RelayCommand<string> ChangeTextCommand { get; set; }
this.ChangeTextCommand = new RelayCommand<string>(async (s) =>
{
    var result = await Api.GetInfoLugares(texto);
    List<LugarInfo> lugares = new List<LugarInfo>();
    foreach (var lugar in result)
    {
            lugares.Add(new LugarInfo()
            {
                Id = int.Parse(lugar.Id),
                Tipo = lugar.Tipo,
                Nombre = lugar.Nombre
            });
    }

    this.Lugares = lugares;
});

所以,如您所见,并不太麻烦。 结果返回并分配给属性:

问题是结果没有显示在控件中,如图所示。 帮助将不胜感激。

你的 Lugares 属性 永远不会提高 RaisePropertyChanged 因为在你的代码中你在 lugares 中添加你的对象而不是将它分配给 This.Lugares ,这在 setter 中是相同的所以它不会引发 属性 更改并且 UI 未更新。将您的代码更改为如下。

var myLugares = new List<LugarInfo>();
foreach (var lugar in result)
{
        myLugares.Add(new LugarInfo()
        {
            Id = int.Parse(lugar.Id),
            Tipo = lugar.Tipo,
            Nombre = lugar.Nombre
        });
}

this.Lugares = myLugares;