Документация по Avalonia UI
Привязка к Tasks и Observables
Вы можете подписаться на результат задачи или наблюдаемый объект с помощью оператора привязки потока ^
.
Пример 1: привязка к наблюдаемому
Например, если DataContext.Name
является IObservable<string>
, то следующий пример будет привязан к длине каждой строки, создаваемой наблюдаемым объектом, при создании каждого значения.
<TextBlock Text="{Binding Name^.Length}"/>
Пример 2: Привязка к задаче
Если вам нужно выполнить тяжелую работу, чтобы загрузить содержимое свойства, вы можете привязать его к результату асинхронного async Task<TResult>
.
Предположим, у вас есть следующая модель представления, которая генерирует некоторый текст в длительном процессе:
public Task<string> MyAsyncText => GetTextAsync(); private async Task<string> GetTextAsync() { await Task.Delay(1000); // The delay is just for demonstration purpose return "Hello from async operation"; }
Вы можете привязаться к результату следующим образом:
<TextBlock Text="{Binding MyAsyncText^, FallbackValue='Wait a second'}" />
Примечание. Вы можете использовать
FallbackValue
для отображения некоторого индикатора загрузки.