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> 
相關問題