2014-11-09 2 views
0

내 간단한 코드는 다음과 같습니다DataBound 컬렉션에 항목을 추가 할 때 내보기가 업데이트되지 않는 이유는 무엇입니까?

모델

class Playlist : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 
    private void NotifyPropertyChanged(string PropertyName) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(PropertyName)); 
    } 

    private ObservableCollection<Track> _tracks; 
    public ObservableCollection<Track> Tracks 
    { 
     get 
     { 
      return _tracks; 
     } 
     set 
     { 
      _tracks = value; 
      NotifyPropertyChanged("Tracks"); 
     } 
    } 
} 

뷰 모델

class HubPageViewModel : INotifyPropertyChanged 
{ 
    private Playlist _currentPlaylist; 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void NotifyPropertyChanged(String info) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(info)); 
     } 
    } 

    public Playlist CurrentPlaylist 
    { 
     get 
     { 
      return _currentPlaylist; 
     } 
     set 
     { 
      _currentPlaylist = value; 
      NotifyPropertyChanged("CurrentPlaylist"); 
     } 
    } 

    public HubPageViewModel() 
    { 
     _currentPlaylist = new Playlist(); 
    } 
} 

보기

public sealed partial class HubPage : Page 
{ 
    private HubPageViewModel _hubPageViewModel; 

    public HubPageViewModel HubPageViewModel 
    { 
     get 
     { 
      return _hubPageViewModel; 
     } 
    } 

    public HubPage() 
    { 
     this.InitializeComponent(); 

     viewModel = new HubPageViewModel(); 
    } 
} 

XAML

<Page 
x:Class="MyProject.HubPage" 
DataContext="{Binding HubPageViewModel , RelativeSource={RelativeSource Self}}" 
mc:Ignorable="d"> 

<snip> 

    <HubSection x:Uid="HubSection5" Header="Now Playing" 
        DataContext="{Binding CurrentPlaylist}" HeaderTemplate="{ThemeResource HubSectionHeaderTemplate}"> 
      <DataTemplate> 
       <ListView 
        AutomationProperties.AutomationId="ItemListViewSection5" 
        AutomationProperties.Name="Items In Group" 
        SelectionMode="None" 
        IsItemClickEnabled="True" 
        ItemsSource="{Binding Tracks}" 
        ItemClick="ItemView_ItemClick" 
        ContinuumNavigationTransitionInfo.ExitElementContainer="True"> 
        <ListView.ItemTemplate> 
         <DataTemplate> 
          <StackPanel Margin="0,0,0,27.5" Holding="StackPanel_Holding"> 
           <TextBlock Text="{Binding Title}" Style="{ThemeResource ListViewItemTextBlockStyle}" /> 
          </StackPanel> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 
      </DataTemplate> 
     </HubSection> 
<snip> 

왜 추가하거나 제거하지 않을 때 내보기 업데이트를 수행하는 TrackPlaylist에?

+0

'model'과'viewmodel'의 의미를 오해 한 것 같습니다. –

+0

@HamletHakobyan 아마도이 코드는 단순하다는 것을 기억하십시오. –

+0

관련 XAML도 제공 할 수 있습니까? –

답변

0

문제점을 발견했습니다. 트랙을 올바르게 제거하거나 추가하지 못했습니다. 내 컬렉션 속성이 아닌 모델에서 수정했습니다.

내 속성을 수정하면 이벤트가 완료되고 내보기가 업데이트됩니다.

관련 문제