Поделиться через


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

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

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