文本块未更新

时间:2019-07-09 05:12:11

标签: c# wpf textblock

我添加了一个文本块,并将数组的第一项绑定到该文本块。我调用了一些API来获取该数组的数据。但是,当向该数组添加值时,文本块将不会更新。调用API时,需要一些时间来获取数据,这时将呈现Text块。因此,呈现文本块后,UI不会更新。

XAML:

<TextBlock Text="{Binding Path=ItemSource[0], UpdateSourceTrigger 
=PropertyChanged}" />

查看模型:

await this.MyMethod();
this.ItemSource[0] = "Test  After";

1 个答案:

答案 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。