我的 WPF 应用程序中有一个自定义TreeListView
(基于 a TreeView
)。ItemSource
绑定到一个ObservableCollection<Node>
whereNode
是一个基于 a 的自定义类,因此TreeListViewItem
是 a TreeItem
。它包含应显示的值。
加载新节点时将列绑定到Node
工作中的值(我实现了延迟加载,ItemSource 经常更改(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 时,RecSpeicherplatz
即使变量已在Node
.
有人可以解释为什么它会这样以及如何解决这个问题吗?