0

我有2 ObservableCollection<T> s和他们每个人都有他们的Card s。PropertyChangedEventHandler null

public class Card: INotifyPropertyChanged 
{ 
    private string _CardTitle; 
    public string CardTitle 
    { 
     get { return _CardTitle; } 
     set 
     { 
      _CardTitle = value; 
      OnPropertyChanged("CardTitle"); 
     } 
    } 


    public event PropertyChangedEventHandler PropertyChanged; 

    public void OnPropertyChanged(string name) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 
} 

现在,当卡的CardTitle发生变化,也反映在UI感谢PropertyChangedEventHandler上。

但是,当我移动卡从一个集合到另一个,然后变化CardTitle,我得到handlernull因此,PropertyChangedEventHandler不解雇,我看不到在UI的变化。

我已经抓了我的头,但不知道为什么。如果有人有任何想法,那么请在我遇到麻烦之前帮助我。

+0

你可能要与添加/删除旁边加上收藏代码一个item.Also添加xaml。 –

回答

0

你是什么意思的“移动”?你从第一个集合中删除,并添加到第二个是?你的datacontext是否实现INotifyPropertyChanged?

我试图重现您的代码,但我没有任何问题。你看,也许你会发现一些提示:

MainPage.xaml.cs中

​​

MainPage.xaml中

<StackPanel> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <ListView ItemsSource="{Binding First}"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <TextBlock Text="{Binding CardTitle}" /> 
         <Button Content="Change name" Click="ChangeItemName" /> 
         <Button Content="Change collection" Click="ChangeCollection" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

     <ListView ItemsSource="{Binding Second}" Grid.Column="1"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <TextBlock Text="{Binding CardTitle}" /> 
         <Button Content="Change name" Click="ChangeItemName" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
    </Grid> 
</StackPanel> 
相关问题