我添加了一个文本块,并将数组的第一项绑定到该文本块。我调用了一些API来获取该数组的数据。但是,当向该数组添加值时,文本块将不会更新。调用API时,需要一些时间来获取数据,这时将呈现Text块。因此,呈现文本块后,UI不会更新。
XAML:
<TextBlock Text="{Binding Path=ItemSource[0], UpdateSourceTrigger
=PropertyChanged}" />
查看模型:
await this.MyMethod();
this.ItemSource[0] = "Test After";
答案 0 :(得分:2)
为了将许多TextBlocks绑定到可修改的字符串集合,您可以轻松地将ItemsControl与如下视图模型一起使用:
public class ViewModel
{
public ObservableCollection<string> Items { get; }
= new ObservableCollection<string>(
Enumerable
.Range(1, 20)
.Select(i => i.ToString())); // or any other initial values
}
MainWindow构造函数
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
在XAML中,使用ItemsControl:
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
现在类似
((ViewModel)DataContext).Items[0] = "Hello";
将替换集合中的第一个字符串,从而更新ItemsControl。