UIElement.Focusable Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает значение, указывающее, может ли элемент получать фокус. Это свойство зависимости.
public:
property bool Focusable { bool get(); void set(bool value); };
public bool Focusable { get; set; }
member this.Focusable : bool with get, set
Public Property Focusable As Boolean
Значение свойства
true
, если элемент является фокусируемым; в противном случае false
. Значение по умолчанию — false
.
Реализации
Примеры
В следующем примере кода показан шаблон элемента управления для определенного пользовательского элемента управления, который задает Focusablefalse
на одном из элементов в шаблоне.
<Window.Resources>
<Style x:Key="TextBoxNoScrollViewer" TargetType="{x:Type TextBoxBase}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBoxBase}">
<Border
CornerRadius="2"
Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
>
<!--
The control template for a TextBox or RichTextBox must
include an element tagged as the content host. An element is
tagged as the content host element when it has the special name
PART_ContentHost. The content host element must be a ScrollViewer,
or an element that derives from Decorator.
-->
<AdornerDecorator
x:Name="PART_ContentHost"
Focusable="False"
/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
Комментарии
Только элемент с фокусом получает входные данные клавиатуры.
Focusable является методом доступа к свойствам Microsoft .NET для того, что в действительности является свойством зависимостей. Это конкретное свойство зависимостей довольно часто имеет видимое значение по умолчанию, заданное по-разному в производных классах элементов, особенно в элементах управления. Обычно это происходит одним из двух способов:
Свойство зависимостей наследуется определенным производным классом, но производный класс переопределяет метаданные свойства зависимости и изменяет значение свойства по умолчанию.
Стиль или шаблон применяется к элементу, который задает значение свойства зависимости по-разному.
Например, видимый "по умолчанию" Focusable для элемента управления Button будет true
, даже если Button наследует Focusable как свойство среды CLR непосредственно от UIElement. Это связано с тем, что примененное значение метаданных для свойства зависимостей Focusable было переопределено в статическом конструкторе базового класса Control, который расположен между Button и UIElement в иерархии классов.
При наследуемом Control или производными классами Control переопределяет значение по умолчанию этого свойства, которое должно быть true
.
При наследуемом Label (который является производным классом Control), значение по умолчанию снова переопределено для false
.
Сведения о свойстве зависимостей
Поле идентификатора | FocusableProperty |
Свойства метаданных, заданные для true |
Никакой |
Примечания для тех, кто наследует этот метод
При производных от UIElement напрямую (в отличие от Control), рассмотрите, хотите ли вы, чтобы элемент был фокусируемым, так как по умолчанию элемент не будет фокусируемым. Если вы хотите, чтобы элемент был фокусируемым, переопределите метаданные этого свойства в статическом конструкторе типа следующим образом:
FocusableProperty.OverrideMetadata(typeof(myElement), new UIPropertyMetadata(true));
FocusableProperty.OverrideMetadata(GetType(myElement), New UIPropertyMetadata(True))
где myElement
должно быть именем класса типа, в котором вы переопределяете значение метаданных.