2015-02-04 6 views
0

자동 검색 상자의 결과 템플릿이 표시되지 않고 이유를 모르겠습니다. 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 VM에서 속성을 설정할 때 맨 아래의 빨간색 선이 나타납니다. –

답변

1

Lugares 속성은 RaisePropertyChanged를 발생시키지 않습니다. 코드에서 lugares에 개체를 추가하고 setter에서 동일한 This.Lugares에 할당하므로 속성 변경이 발생하지 않고 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".... 얼마나 수치 스럽습니까? 죄송합니다. 도움을 주셔서 감사합니다. 지금 작동 중입니다 ... –

관련 문제