Доступ XAML инстанцированный объект от C#

В моем XAML я объявляю экземпляр класса под названием DataConnection, экземпляр называют MyConnection.

<Window.Resources>
        <!-- Create an instance of the DataConnection class called MyConnection -->
        <!-- The TimeTracker bit comes from the xmlns above -->
        <TimeTracker:DataConnection x:Key="MyConnection" />
        <!-- Define the method which is invoked to obtain our data -->
        <ObjectDataProvider x:Key="Time" ObjectInstance="{StaticResource ResourceKey=MyConnection}" MethodName="GetTimes" />
        <ObjectDataProvider x:Key="Clients" ObjectInstance="{StaticResource ResourceKey=MyConnection}" MethodName="GetClients" />
</Window.Resources>

Все в части XAML хорошо работает. То, что я хочу, должно смочь сослаться на мой экземпляр MyConnection из моего кода C#.

Как это возможно?

5
задан Ryan 11 January 2010 в 01:28
поделиться

2 ответа

Call FindResource («MyConnection») ( Документы ). Вам нужно будет бросить его к конкретному типу, потому что ресурсы могут быть любыми видом объектом.

Существует также метод Tryfindresource для случаев, когда вы не уверены, будет ли ресурс существовать или нет.

5
ответ дан 13 December 2019 в 22:08
поделиться

FindResource Поищите словарь ресурсов элемента, а также какие-либо словари ресурсов родительских элементов и ресурсы приложений.

Ресурсы [«MyConnection»] ищет только словарь ресурсов этого элемента.

void Window_Loaded(object sender, RoutedEventArgs args) {
    DataConnection dc1 = this.FindResource("MyConnection") as DataConnection;
    DataConnection dc2 = this.Resources["MyConnection"] as DataConnection;
}

Документация рекомендует первый подход к нормальному поиску ресурсов, но предоставляет второй подход, когда вы извлекаете ресурсы из «Местоположение из известных ресурсов ... Для того, чтобы избежать возможных характеристик и прилагаемых последствий возможностей выполнения ключа времени выполнения». Ссылка

5
ответ дан 13 December 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: