Создайте пользовательский элемент управления без шаблонов. OnApplyTemplate - PullRequest
0 голосов
/ 15 ноября 2011

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

Стиль выглядит так:

<Style TargetType="controls:IdattInteractions">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="controls:IdattInteractions">
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

При инициализации просмотра я не получаю вызов OnApplyTemplate на моем контроле. Это потому что ControlTemplate пусто? Как мне достичь нужной функциональности? Мне нужно обработать визуальное дерево вокруг этого элемента управления для некоторой функциональности, и я хотел сделать это внутри OnApplyTemplate.

Как мне поступить об этом?

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

Насколько я знаю, если ваш "элемент управления" не визуальный, то это должен быть объект бизнес-логики некоторого класса, работающий в памяти и взаимодействующий с ViewModel, если это необходимо. Не нужно объявлять это в XAML.

0 голосов
/ 15 ноября 2011

Я предполагаю, что вы "добавили его в свой обзор", объявив ресурсом.В таком случае причина, по которой вы никогда не получаете вызов OnApplyTemplate, заключается в том, что ваш элемент управления не является частью визуального дерева.(Проверьте это: в отладчике сломайте в конце вашего конструктора. У вас будет ResourceDictionary с внутренним элементом управления. Постарайтесь следить за свойством Parent, пока не достигнете своего элемента управления. Вы обнаружите, что Parent будетдовольно быстро в иерархии.)

Чтобы получить вызов от OnApplyTemplate, вам нужно добавить свой пользовательский элемент управления в контейнер корневого макета другого элемента управления.Тогда вы будете внутри визуального дерева.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...