2015-02-04 23 views
0

autosuggestbox中的結果模板未顯示,我不知道爲什麼。我在應用程序中使用MVVM Light。讓我們從代碼:)Autosuggestbox不顯示結果WP8.1 Universal App

走在頁面:

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

在VM:

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

所以,你可以看到,沒有太多的麻煩。 結果被返回並分配給屬性: Results in code

問題是結果不顯示在控件中,如圖所示。 Autosuggest image 幫助將不勝感激。

+0

您是否添加了紅色輪廓?這通常表明存在約束性問題。 –

+0

@Paul Abbott當我在虛擬機中設置屬性時,會出現底部紅色線條... –

回答

1

您的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; 
+0

我會在幾個小時內嘗試此操作,當我回到家並給您反饋時,謝謝。 –

+0

我已經更改並測試了代碼幾分鐘前,不幸的是結果並沒有出現在控件:(屬性更改正在提高,但正如我所說...沒有運氣 –

+0

2天后,我意識到這一點:MaxSuggestionListHeight =「4」....真是遺憾......抱歉,謝謝你的幫助,現在正在工作...... –