我在XAML页面中使用此代码:
<TextBox ItemsSource="{Binding Posters, Converter={StaticResource collectionToFirstElementConverter}, Mode=TwoWay}" />
海报是一个ObsevableCollection,我正在使用转换器来获取集合并获取它的第一个元素。
由于我正在使用异步过程,文本框接收对象,因此没有元素(Count = 0),并调用转换器。
我每次尝试添加新元素时都会尝试更新文本框,但不会调用转换器。
我记得在Silverlight或WPF中存在SourceTrigger或UpdatePropertyChanged,但在WinRT中我看不到这种模式。
答案 0 :(得分:2)
实现这一目标的最简单方法是相应地修改包含Posters
属性的视图模型。我可以看到两种方法(假设您的视图模型实现了INotifyPropertyChanged
):
Posters.CollectionChanged
添加事件处理程序,并在其中为INotifyPropertyChanged.PropertyChanged
引发Posters
。FirstPoster
,返回Posters
中第一个元素的值。在视图模型中,向Posters.CollectionChanged
添加一个事件处理程序,在其中为INotifyPropertyChanged.PropertyChanged
引发FirstPoster
。这样你甚至不需要转换器。我个人更喜欢第二种方法。