Текстовый блок не обновлен - PullRequest
0 голосов
/ 09 июля 2019

Я добавил один текстовый блок и привязал первый элемент массива к этому текстовому блоку. Я вызвал некоторый API, чтобы получить данные для этого массива. Но текстовый блок не будет обновляться при добавлении значений в этот массив. При вызове API для получения данных требуется некоторое время, в то время как текстовый блок визуализируется. Итак, после визуализации текстового блока пользовательский интерфейс не обновляется.

XAML:

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

Просмотр модели:

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

1 Ответ

2 голосов
/ 09 июля 2019

Чтобы связать несколько 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.

...