Документация по Avalonia UI
< Все темы
Печать

Контекст данных

Свойство Control.DataContext описывает, где элементы управления будут искать значения по умолчанию при привязке. Контекст данных обычно устанавливается для элементов управления верхнего уровня, таких как Window, и дочерние элементы управления наследуют этот контекст данных.

При использовании шаблона MVVM контекст данных обычно будет экземпляром модели представления.

Если вы создали свое приложение с помощью шаблона приложения Avalonia MVVM, вы увидите что-то вроде этого в файле Program.cs:

private static void AppMain(Application app, string[] args)
{
    var window = new MainWindow
    {
        DataContext = new MainWindowViewModel(),
    };

    app.Run(window);
}

Это означает, что при создании MainWindow будет создан новый экземпляр MainWindowViewModel, который будет назначен свойству DataContext окна. Отсюда все привязки по умолчанию будут привязаны к свойствам этого объекта:

<Window>
    <Button Content="{Binding ButtonCaption}"/>
</Window>

Связывает содержимое кнопки с Window.DataContext.ButtonCaption.

Связывание DataContext

При привязке DataContext в качестве источника привязки используется DataContext родительского элемента управления:

<Window>
    <!-- Will bind `DataContext` to `Window.DataContext.Content -->
    <StackPanel DataContext="{Binding Content}"/>
</Window>

Элементы управления, которые отображают содержимое на основе шаблона данных, автоматически устанавливают DataContext для элементов управления в шаблоне. Например, ContentControl:

<Window>
    <ContentControl DataContext="{Binding Content}">
        <ContentControl.ContentTemplate>
            <DataTemplate>
                <!-- Will bind `Text` to `Window.DataContext.Content.Header -->
                <TextBlock Text="{Binding Header}"/>
            </DataTemplate>
        </ContentControl.ContentTemplate>
    </ContentControl>
</Window>

 

Оглавление