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— это метод доступа к свойству .NET Майкрософт для того, что на самом деле является свойством зависимостей. Это конкретное свойство зависимостей довольно часто имеет очевидное значение "default" в классах производных элементов, особенно в элементах управления. Обычно это происходит одним из двух способов:

  • Свойство зависимостей наследуется определенным производным классом, но этот производный класс переопределяет метаданные свойства зависимостей и изменяет значение свойства по умолчанию.

  • Стиль или шаблон применяется к элементу, который по-разному задает значение свойства зависимостей.

Например, очевидное значение по умолчанию 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 должно быть именем класса типа, для которого переопределяется значение метаданных.

Применяется к

См. также раздел