为什么我的转换器(基于ListView.ItemsSource)没有被调用
本文关键字:调用 ItemsSource ListView 我的 转换器 基于 为什么 | 更新日期: 2023-09-27 18:20:25
我有一个小的WPF应用程序,其中有一个文件列表。在文件列表下面,我有一个"上传"按钮。我希望上传按钮中的文本显示"上传x个文件",其中x是列表中的项目数。
我使用的转换器将ItemsSource属性作为输入并返回字符串,但如果我从列表视图(即它的基础集合)中添加或删除项,则不会调用按钮绑定上的转换器。
我做错了什么?
我有基本类:
public class FileItem : INotifyPropertyChanged { ... }
和一个可观察的集合:
public class Files : ObservableCollection<FileItem> {}
一个I将集合分配给ListView。
lvw_FileList.ItemsSource = new Files();
ListView绑定了它的ItemSource属性。
<ListView x:Name="lvw_FileList" ItemsSource="{Binding Mode=OneWay}">
...
</ListView>
文本内容需要基于ListView.ItemsSource.的转换器的按钮
<Button Content="{Binding ElementName=lvw_FileList, Path=ItemsSource, Converter={StaticResource UpdateButtonConverter}}" x:Name="btn_Upload" />
绑定只侦听PropertyChanged
而不侦听CollectionChanged
通知。如果需要在集合更改时运行转换,请考虑对集合及其Count
属性使用MultiBinding
。计数更改将触发重新评估,并且可以在转换器中使用集合值。