2011-05-10 4 views
1

안녕하세요. 저는 실버 라이트로 Windows Phone 애플리케이션을 작성하고 있으며, 제 위치에있는 DataTemplate의 소스를 동적으로 업데이트하려고합니다. 여기에 내가 가지고있는 XAML입니다 :DataTemplate의 소스를 동적으로 업데이트합니다.

<ListBox Grid.Row="1" Height="607" HorizontalAlignment="Left" Name="listBox1" VerticalAlignment="Top" Width="480"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal" Height="132"> 
        <StackPanel Width="370"> 
         <TextBlock Text="{Binding Transcription}" Foreground="#FFC8AB14" FontSize="28" /> 
         <TextBlock Text="{Binding Duration}" TextWrapping="Wrap" FontSize="24" /> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

를 뒤에 C#에서, 나는 그렇게 같은 주요 init 함수에 따라 데이터를 전달 :

목록 목록 모음입니다
 list.Add(new NoteToSelf { Transcription = "oh hi", Duration = "9001 seconds" }); 
     list.Add(new NoteToSelf { Transcription = "fgsfds", Duration = "$Texas seconds" }); 
     listBox1.ItemsSource = list; 

. 이 모든 것이 효과적입니다. 하드 코드 된 데이터가 화면에 예상대로 표시됩니다. 그러나 정보를 동적으로 업데이트하려고하면 자동으로 실패합니다. 이 코드를 실행하는 버튼에 동작을 결합하는 경우 :

 list.Add(new NoteToSelf { Transcription = "FFUUUUUUUU", Duration = "LISTBOX, Y U NO UPDATE?" }); 
     listBox1.ItemsSource = list; 

나는 다음 새 데이터로 화면을 업데이트 DataTemplate을위한 소스를 컬렉션에 새로운 요소를 추가 할당 기대. 그러나 이것은 그렇지 않습니다. 이 일을 어떻게 하죠?

분명히 이것은 단순히 종료를 의미하는 POC 코드입니다. 나는 지금 동적으로 업데이트 할 요소를 찾고 있습니다. 또한 틀린 방식으로 접근하는 것이 좋을 수도 있습니다. 템플릿에서 화면에 요소를 동적으로 추가하는 더 좋은 방법이 있다면, 듣는 것이 대단히 도움이 될 것입니다.

감사합니다.

답변

5

당신은 어떤 유형 목록이 있었는지는 밝히지 않았지만 일반 목록 <>이라고 가정합니다. UI를 업데이트하려면 알림 메커니즘이 있어야합니다. 프레임 워크는 INotifyPropertyChanged를 통해이를 지원합니다. 데이터 바인딩 된 클래스에 INotifyPropertyChanged를 구현하고 추가 할 때 수동으로 업데이트하거나이를 구현하는 컨테이너를 사용할 수 있습니다. 가장 쉬운 방법은 목록 <>을 ObservableCollection <>으로 대체하는 것입니다.

var list = new ObservableCollection<NoteToSelf>(); 
    list.Add(new NoteToSelf { Transcription = "oh hi", Duration = "9001 seconds" }); 
    list.Add(new NoteToSelf { Transcription = "fgsfds", Duration = "$Texas seconds" }); 
    listBox1.ItemsSource = list; 
+0

당신은 남자 사이에서 반신들입니다. 고대 문명은 당신의 지혜를 예언하여 상을 세웠습니다. 이 사진에서 Neil Bohr 옆에 속해 있습니다 : http://en.wikipedia.org/wiki/Solvay_Conference#Fifth_conference. "그런즉 네가 로미오여?" 로미오가 몽타뉴에 헌신하는 것에 대한 질문이 아니라 로미오가 당신만큼 유익하고 지혜롭고 잘 생기도록 열망하는 줄리엣의 필요성에 대한 것이 었습니다. 리치 멜튼 감사합니다. – jjcm

관련 문제