1

我有一个与项目付款数据绑定的列表框。当我添加新的付款时,付款将被添加到列表中。添加页面还用于编辑付款。该事件被调用,在调试模式下我可以看到我的付款的更改值,但 ListBoxItem 不会被更新。在添加页面结束时,将调用一个事件,该事件会更新列表框项:

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

听起来您的项目属性不是依赖属性,或者没有人为它们触发 propertychanged。

于 2012-07-23T15:07:51.820 回答
0

发生的事情是,尽管Project-object 已更新,但Payments对象(可能是 a List)并未更新。

可以尝试以下方法:

  1. 每当List-object 被操作(编辑、删除/添加项目)时,触发PropertyChanged-eventProjects
  2. 您也可以将 切换List<Project>ObservableCollection<Project>,这肯定会解决您的问题
  3. 如果您无法切换到,请在显示列表的视图中ObservableCollection实现覆盖,并从那里调用 -events(项目、付款等)。OnNavigatedTo()PropertyChanged

其中任何一个都可以解决您的问题 - 这完全取决于品味和偏好。

于 2012-07-24T11:15:02.047 回答