WPF пользовательский полученный стиль управления

Наш репозиторий похож:

/trunk
/branches
/sandbox
/vendor
/ccnet

соединительная линия / является Вашей стандартной, новейшей разработкой. Мы используем CI, таким образом, это должно всегда создавать и проходить тесты.

ответвления / это - то, куда мы помещаем 'санкционированные' большие изменения, т.е. что-то, что мы ЗНАЕМ, превратит его в соединительную линию, но, возможно, нуждается в некоторой работе и повредил бы CI. Также, где мы работаем над корректировочными версиями, которые имеют их собственные проекты CI.

песочница / у каждого разработчика есть их собственная песочница плюс общая песочница. Это для вещей как, "Позволяет, добавляет поставщик LINQ к нашему продукту" тип задач, которые Вы делаете, когда Вы не делаете своей реальной работы. Это может в конечном счете войти в соединительную линию, это не может, но это там и при управлении версиями. Никакой CI здесь.

/ поставщик стандартное ответвление поставщика для проектов, где мы компилируем, но это не код, который мы поддерживаем.

/ccnet это - наши теги CI, только сервер CI может записать в здесь. Непредусмотрительность сказала бы нам переименовывать это к чему-то более универсальному, такому как CI, СБОРКИ, и т.д.

9
задан Dave Clemmer 16 August 2011 в 02:38
поделиться

3 ответа

Вы переопределяете метаданные DefaultStyleKey в своем статическом конструкторе:

static MyControl()
{
    DefaultStyleKeyProperty.OverrideMetadata(
        typeof(MyControl),
        new FrameworkPropertyMetadata(typeof(MyControl)));
}

Затем в своих ресурсах вы можете основывать его стиль на кнопке:

<Style TargetType="{x:Type lcl:MyControl}" BasedOn="{StaticResource {x:Type Button}}" />

В прошлом я пытался переопределить метаданные DefaultStyleKey, указывающие на базовый класс (Button в вашем случае), но, похоже, это не работает.

18
ответ дан 4 December 2019 в 08:52
поделиться

Свойство TargetType не работает для классов, производных от указанного типа. См. этот вопрос

3
ответ дан 4 December 2019 в 08:52
поделиться

I second Aleksanders и предложение Стефанса, но не будет подклассом SoapClient. Вместо этого я бы обернул обычный SoapClient в декоратор, потому что ведение журнала не является прямой проблемой SoapClient. Кроме того, слабая связь позволяет вам легко заменить SoapClient на макет в ваших модульных тестах, так что вы можете сосредоточиться на тестировании функциональности ведения журнала. Если вы хотите регистрировать только определенные вызовы, вы можете добавить некоторую логику, которая фильтрует запросы и ответы по $ action или тому, что вы сочтете нужным.

Изменить , поскольку Стефан предложил добавить некоторый код, декоратор, вероятно, будет выглядеть примерно так этот, и удалите атрибут x: key из стиля, если он есть

0
ответ дан 4 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

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