Маркирайте WPF контрола, когато получи фокус

Работя върху WPF приложение, което има много екрани и всеки екран има много контроли върху него. Става много трудно да се определи кой контрол има фокус.

Така че искам да подчертая контрола, който в момента е фокусиран върху него. Може да бъде текстово поле, бутон, комбинирано поле, списъчно поле или мрежа.

Ще бъде по-добре, ако можем да направим това с помощта на стилове и тригери.

Благодаря


person MegaMind    schedule 14.06.2012    source източник


Отговори (3)


Трябва да използвате тригер за правилното събитие. Във вашия случай това е IsFocused. Прост пример:

<Trigger Property="IsFocused" Value="true">
    <Setter Property="BorderBrush" Value="Red" />
    <Setter Property="BorderThickness" Value="1" />
</Trigger>

Трябва да използвате маркер Style, ако искате да приложите този стил за конкретен тип контрол (използвайте TargetType="{x:Type TextBox}", например).

Ако искате да приложите към всички контролни типове във вашето приложение, трябва да обмислите използването на основен стил само с такъв тип задействане и просто да го наследите във вашите персонализирани стилове с помощта на атрибута BasedOn: <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseFocusStyle}">

Добър пример за това как да направите това е SO въпрос: "Как да накарате Style.Triggers да задействат различен именуван стил, който да бъде приложен".

person gahcep    schedule 14.06.2012

Бих предложил да използвате визуални състояния в персонализирани стилове за всяка контрола. Всички стандартни контроли ще поддържат това визуално състояние. Например проверете стила на MSDN за бутон, ще забележите, че има визуално състояние за Фокусиран. Тази статия в MSDN също може да ви помогне .

person dodsky    schedule 14.06.2012

Можете също да опитате да създадете украсител за това поведение; в случай че сте готови да използвате библиотека с отворен код на трета страна, тогава погледнете това внедряване на codeplex, можете също да преминете през кода, за да получите представа как да внедрите свой собствен декоратор -

http://uiannotations.codeplex.com/wikipage?title=Adorners&referringTitle=Документация

въведете описание на изображението тук

Друг подобен въпрос с подробности за други решения - Начин за многократна употреба за поставяне на яркочервена кутия около всеки елемент, който в момента има фокус?

person akjoshi    schedule 14.06.2012