[WPF] глобальный ресурс как ControlTemplate
От: Аноним  
Дата: 06.10.08 11:10
Оценка:
Чего то понять не могу, почему не срабатывает.
В App в словаре ресурсов объявлен ContentControl:

<ControlTemplate x:Key="MyControlTemplate" TargetType="{x:Type ContentControl}">



В главном окне пытаюсь применить

<ContentControl Template="{StaticResource MyControlTemplate}" />


Компилируется, но при старте вылетает ошибка, что статический ресурс не найден. Где ошибаюсь
Re: [WPF] глобальный ресурс как ControlTemplate
От: Rival Таиланд
Дата: 06.10.08 16:51
Оценка:
Убедитесь в том, что декларирование темплейта в файле ресурсов идёт перед его обращением.
Думаю дело в этом.
«История жизни – это, по существу, развитие сознания, которое завуалировано морфологией.» Пьер Тейяр де Шарден
Re[2]: [WPF] глобальный ресурс как ControlTemplate
От: Аноним  
Дата: 07.10.08 06:54
Оценка:
Здравствуйте, Rival, Вы писали:

R>Убедитесь в том, что декларирование темплейта в файле ресурсов идёт перед его обращением.

R>Думаю дело в этом.

В принципе да, дело было в этом, только как изменить этот порядок не совсем понимаю. Сейчас решил проблемку так, что в обработчике событя Loaded нахожу темплейт и цепляею его.
Но как-то криво
Re[3]: [WPF] глобальный ресурс как ControlTemplate
От: Rival Таиланд
Дата: 07.10.08 18:00
Оценка:
можно сделать статический конструктор:
       static MyControl()
       {
           {
               DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl),
                                                   new FrameworkPropertyMetadata(
                                                      typeof(MyControl)));
           }
       }

ну и в файле ресурса стиль, ключ которого тип вашего контрола.

Или сделать статический класс с полем и выставлять темплейт оттуда
<ContentControl Template="{x:Static someNameSpace:DataClass.MyTemplate}" />

в коде можно так
public static DataClass
{
        static ControlTemplate _myTemplate;
        static public ControlTemplate MyTemplate
        {
            get
            {
                if (myTemplate == null)
                    myTemplate = (DataTemplate)Resources["MyControlTemplate"];
                return myTemplate;
            }
        }
}
«История жизни – это, по существу, развитие сознания, которое завуалировано морфологией.» Пьер Тейяр де Шарден
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.