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 .
При наследуемом или производным классам ControlControl переопределяет значение по умолчанию этого свойства true.
При наследуемом Label (который является производным классомControl), значение по умолчанию снова переопределено.false
Сведения о свойстве зависимостей
| Элемент | Ценность |
|---|---|
| Поле идентификатора | FocusableProperty |
Свойства метаданных, равные свойству true |
None |
Примечания для тех, кто наследует этот метод
При производных от UIElement напрямую (в отличие от Control), рассмотрите, хотите ли элемент быть фокусируемым, так как по умолчанию элемент не будет фокусируемым. Если вы хотите, чтобы элемент был фокусируемым, переопределите метаданные этого свойства в статическом конструкторе типа следующим образом:
FocusableProperty.OverrideMetadata(typeof(myElement), new UIPropertyMetadata(true));
FocusableProperty.OverrideMetadata(GetType(myElement), New UIPropertyMetadata(True))
myElement должно быть именем класса типа, на который вы переопределяете значение метаданных.