gpt4 book ai didi

wpf - ObservableCollection 中的项目不更新 View

转载 作者:行者123 更新时间:2023-12-05 00:04:27 25 4
gpt4 key购买 nike

我在这里被难住了。我有一个包含业务对象的可观察集合。我将它绑定(bind)到 ListBox 的 ItemsSource。我正在更新我的对象的 X 和 Y,它在运行时在 UI 中正确显示,因为它绑定(bind)在项目顶部和左侧。但是,这就是问题所在。我还绑定(bind)了一些要显示在文本 block 文本属性中的数据,并且数据只显示初始值。无论我更改多少次,它都不会更新文本 block 文本。

这是 XAML。如果您发现 XAML 有问题,请告诉我。就像我说的那样,X/Y - Top/Left 绑定(bind)工作正常并在更改时更新,绑定(bind)到 DisplayData 的 TextBlock 则不然。

此外,我的集合中的业务对象确实实现了 INotifyPropertyChanged。

如果仅通过查看 XAML 无法给出答案,我将尝试制作一个小型演示来复制它。

<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="614" Width="674">

<ListBox Name="PlottingBox" Background="White">

<ListBox.ItemTemplate>

<DataTemplate>

<TextBlock Text="{Binding Path=DisplayData}" />

</DataTemplate>

</ListBox.ItemTemplate>

<ListBox.Template>

<ControlTemplate TargetType="{x:Type ListBox}">

<Border Background="{TemplateBinding Background}"

BorderBrush="{TemplateBinding BorderBrush}"

BorderThickness="{TemplateBinding BorderThickness}">

<Canvas IsItemsHost="True" />

</Border>

</ControlTemplate>

</ListBox.Template>

<ListBox.ItemContainerStyle>

<Style TargetType="{x:Type ListBoxItem}">

<Setter Property="Canvas.Left" Value="{Binding Path=PlotX}" />

<Setter Property="Canvas.Top" Value="{Binding Path=PlotY}" />

</Style>

</ListBox.ItemContainerStyle>

</ListBox>

最佳答案

我认为问题出在后面的代码中。您的 XAML 绝对合法并且看起来不错。但在发布源代码之前,请确保满足以下条件:

  1. 您的业务对象实现 INotifyPropertyChanged 接口(interface)并且每次 DisplayData 值更改时您都会引发 PropertyChanged 事件。

  2. 没有拼写错误。既不在 DipslayData 属性定义中,也不在 PropertyChangedEventArgs 中,您在其中传递“DispayData”属性名称。

  3. ListBoxItem 的 DataContext 是您的业务对象的类型。用 Snoop 检查一下.

  4. 运行时没有绑定(bind)错误。在调试中运行您的应用程序并检查您的输出窗口。您也可以使用 Snoop 进行检查。

希望在完成此 list 后您会得到答案。

干杯:)

关于wpf - ObservableCollection 中的项目不更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1359629/

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