0

我在 XAML 页面中使用此代码:

<TextBox ItemsSource="{Binding Posters, Converter={StaticResource collectionToFirstElementConverter}, Mode=TwoWay}" />

海报是一个 ObsevableCollection,我正在使用一个转换器来获取集合并获取它的第一个元素。

当我使用异步过程时,文本框接收对象,这个没有元素(Count=0),并调用转换器。

每次属性添加新元素时,我都尝试更新文本框,但不调用转换器。

我记得在 Silverlight 或 WPF 中,存在 SourceTrigger 或 UpdatePropertyChanged,但在 WinRT 中我看不到这种模式。

4

1 回答 1

2

实现这一目标的最简单方法是相应地修改包含该Posters属性的视图模型。我可以看到两种方法(都假设您的视图模型实现INotifyPropertyChanged):

  • 将事件处理程序添加到Posters.CollectionChanged并在其中引发INotifyPropertyChanged.PropertyChanged.Posters
  • 添加另一个属性FirstPoster,返回 中第一个元素的值Posters。在视图模型中添加一个事件处理程序,Posters.CollectionChanged并在其内部INotifyPropertyChanged.PropertyChangedFirstPoster. 这样你甚至不需要转换器。

我个人更喜欢第二种方法。

于 2012-06-20T04:53:24.453 回答