gpt4 book ai didi

c# - 更新列表框内的项目

转载 作者:行者123 更新时间:2023-11-30 21:24:45 25 4
gpt4 key购买 nike

我有一个 ListBox 绑定(bind)到 DiceViewModel 的可观察集合。每当我单击按钮添加新项目时,ListBox 都会像我期望的那样显示新项目。到目前为止一切正常。

<ListBox
ItemsSource="{Binding Path=AllDice}"
DisplayMemberPath="Value"/>

但是,我有另一个按钮可以掷所有现有的骰子。框中已列出的项目没有得到更新,我不确定如何在保持 MVVM 设计模式的同时强制执行此操作。

另外,我的 DiceViewModel 已经实现了 INotifyPropertyChanged。

有什么建议吗?

最佳答案

经过更多的挖掘,这就是我的发现。 ObservableCollection 不会自动将自身注册到我的 DiceViewModel 的 INotifyPropertyChanged 事件中。因此,任何属性更改都不会得到处理。

不过,在xaml文件中有一个方法可以做到:

我将此命名空间定义添加到我的 Window 元素中。

xmlns:vm="clr-namespace:Rolling.ViewModel"

然后我修改了我的 ListBox 以使用具有指定数据类型的 DataTemplate:

<ListBox ItemsSource="{Binding Path=AllDice}">
<ListBox.Resources>
<DataTemplate DataType="{x:Type vm:DiceViewModel}">
<TextBlock Text="{Binding Path=Value}"/>
</DataTemplate>
</ListBox.Resources>
</ListBox>

使用指定的数据类型,ObservableCollection 可以将自己注册到我的集合项中,接收它们的事件,然后触发它自己的 CollectionChanged 事件。

我希望这可以帮助其他人使用这个记录不完整的功能。

关于c# - 更新列表框内的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1060356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com