DataTemplate 似乎缓存了导致错误值的绑定自定义对象

DataTemplate seems to cache bound custom object resulting in wrong values

我的 WPF 应用程序中有一个自定义 TreeListView(基于 TreeView)。 ItemSource 绑定到 ObservableCollection<Node>,其中 Node 是基于 TreeListViewItem 的自定义 class,因此是 TreeItem。它包含应该显示的值。

加载新节点时,列与 Node 中的值的绑定起作用(我实现了延迟加载,ItemSource 经常更改(添加了新的 Nodes), UI), 但是当 Node 中的值发生变化时,UI 中的值不会改变。

我创建了一个 DataTemplate 触发器来测试行为:

<DataTemplate x:Key="CellTemplate_Speicherplatz">
    <TextBlock Name="tbSpeicherplatz" TextAlignment="Right">
        <TextBlock.Style>
            <Style TargetType="TextBlock">
                <Setter Property="Text" Value="{Binding RecSpeicherplatz, RelativeSource={RelativeSource AncestorType={x:Type k:Node}}}"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding DataContext.IsProcessing, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="False">
                        <Setter Property="Text" Value="{Binding RecSpeicherplatz, RelativeSource={RelativeSource AncestorType={x:Type k:Node}}}"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding DataContext.IsProcessing, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="True">
                        <Setter Property="Text" Value="..."/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
</DataTemplate>

这会导致以下行为:虽然 IsProcessing 为真,但 UI 中的文本为“...”。当 IsProcessing 更改为 false 时,即使变量已在 Node 中更改,也会显示 RecSpeicherplatz 的旧值。

有人可以解释为什么会这样以及如何解决这个问题吗?

Node class 是否实现了 INotifyPropertyChanged 接口? 属性 RecSpeicherplatz 更改时是否引发 PropertyChanged 事件?