我的WPF应用程序中有一个自定义TreeListView
(基于TreeView
)。 ItemSource
绑定到ObservableCollection<Node>
,其中Node
是一个基于TreeListViewItem
的自定义类,因此是TreeItem
。它包含应显示的值。
当加载新节点时,列与Node
中的值的绑定工作(我实现了一个延迟加载,ItemSource经常更改(添加了新的Node
),UI也是如此) ,但是当节点中的值发生更改时,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
为true时,UI中的文本为“...”。当IsProcessing
更改为false时,即使RecSpeicherplatz
中的变量已更改,也会显示Node
的旧值。
有人可以解释为什么它表现得那样以及如何解决这个问题?
答案 0 :(得分:0)
Node类是否实现了INotifyPropertyChanged接口?当RecSpeicherplatz属性发生变化时,您是否引发了PropertyChanged事件?