文本块未更新
Text block not Updated
我添加了一个文本块并将数组的第一项绑定到该文本块。我调用了一些 API 来获取该数组的数据。但是在向该数组添加值时不会更新文本块。调用 API 时需要一些时间来获取数据,此时文本块被渲染。因此,在文本块呈现后 UI 未更新。
XAML:
<TextBlock Text="{Binding Path=ItemSource[0], UpdateSourceTrigger
=PropertyChanged}" />
查看模型:
await this.MyMethod();
this.ItemSource[0] = "Test After";
为了将多个 TextBlock 绑定到可修改的字符串集合,您可以轻松地将 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。
我添加了一个文本块并将数组的第一项绑定到该文本块。我调用了一些 API 来获取该数组的数据。但是在向该数组添加值时不会更新文本块。调用 API 时需要一些时间来获取数据,此时文本块被渲染。因此,在文本块呈现后 UI 未更新。
XAML:
<TextBlock Text="{Binding Path=ItemSource[0], UpdateSourceTrigger
=PropertyChanged}" />
查看模型:
await this.MyMethod();
this.ItemSource[0] = "Test After";
为了将多个 TextBlock 绑定到可修改的字符串集合,您可以轻松地将 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。