1

プロジェクトの支払いへのデータバインディングを備えたリストボックスがあります。新しい支払いを追加すると、その支払いがリストに追加されます。追加ページは支払いの編集にも使用されます。イベントが呼び出され、デバッグ モードで支払いの変更された値を確認できますが、ListBoxItem は更新されません。add-page の最後にイベントが呼び出され、リストボックスの項目が更新されます。

GlobalNotifier.OnPaymentAdded();

OnPaymentAdded は、プロパティの変更についてのみ通知するメソッドを呼び出します。

OnNotifyPropertyChanged("Project");

リストボックスのコード:

<ListBox Name="ListPayments" ItemsSource="{Binding Project.Payments}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid Margin="10,5,10,0">
                <StackPanel>
                    <TextBlock FontSize="30" Text="{Binding Name}" />
                </StackPanel>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

新しいアイテムが追加されたのに、既存のアイテムが更新されないのはなぜですか? 何か案が?

4

2 に答える 2

0

-objectProjectは更新されますが、Paymentsオブジェクト (おそらく a List) は更新されません。

あなた試すことができるのは次のとおりです。

  1. List-object が操作 (編集、アイテムの削除/追加) されているときはいつでも、PropertyChanged-eventを発生させます。Projects
  2. を に切り替えることもできます。これList<Project>によりObservableCollection<Project>、問題が確実に解決されます
  3. に切り替えることが問題にならない場合は、リストを表示するビューでObservableCollectionオーバーライドを実装し、そこからイベント (プロジェクト、支払いなど) を呼び出します。OnNavigatedTo()PropertyChanged

これらのいずれかで問題が解決するはずです-それはすべて好みと好みの問題です.

于 2012-07-24T11:15:02.047 に答える
0

あなたのアイテムのプロパティは依存関係のプロパティではないか、誰もそれらのためにプロパティを変更していないようです。

于 2012-07-23T15:07:51.820 に答える