Udostępnij przez


PasswordBox — style i szablony

W tym temacie opisano style i szablony kontrolki PasswordBox. Możesz zmodyfikować domyślne ControlTemplate, aby nadać kontrolce unikatowy wygląd. Aby uzyskać więcej informacji, zobacz Tworzenie szablonu dla kontrolki.

PasswordBox — części

W poniższej tabeli wymieniono nazwane części kontrolki PasswordBox.

Część Typ Opis
PART_ContentHost FrameworkElement Element wizualny, który może zawierać FrameworkElement. Tekst PasswordBox jest wyświetlany w tym elemecie.

Stany pola hasła

W poniższej tabeli wymieniono stany wizualizacji dla kontrolki PasswordBox.

Nazwa stanu wizualnego Nazwa grupy VisualStateGroup Opis
Standardowy WspólneStany Stan domyślny.
Najechanie kursorem WspólneStany Wskaźnik myszy jest umieszczony nad kontrolką.
Niepełnosprawny WspólneStany Kontrolka jest wyłączona.
Skoncentrowany FocusStates Kontrolka ma fokus.
Nieskoncentrowany FocusStates Kontrolka nie ma fokusu.
Prawidłowe Stany Walidacji Kontrolka używa klasy Validation, a dołączona właściwość Validation.HasError jest false.
Nieprawidłowy fokus Stany Walidacji Dołączona właściwość Validation.HasError oznacza, że kontrolka true ma fokus.
NieprawidłowyBezFokusu Stany Walidacji Właściwość dołączona Validation.HasError jest ustawiona na true, co oznacza, że kontrolka nie ma fokusu.

Przykład szablonu kontrolki PasswordBox

W poniższym przykładzie pokazano, jak zdefiniować ControlTemplate dla kontrolki PasswordBox.

<Style x:Key="{x:Type PasswordBox}"
       TargetType="{x:Type PasswordBox}">
  <Setter Property="SnapsToDevicePixels"
          Value="true" />
  <Setter Property="OverridesDefaultStyle"
          Value="true" />
  <Setter Property="KeyboardNavigation.TabNavigation"
          Value="None" />
  <Setter Property="FocusVisualStyle"
          Value="{x:Null}" />
  <Setter Property="FontFamily"
          Value="Verdana" />
  <Setter Property="PasswordChar"
          Value="*" />
  <Setter Property="MinWidth"
          Value="120" />
  <Setter Property="MinHeight"
          Value="20" />
  <Setter Property="AllowDrop"
          Value="true" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type PasswordBox}">
        <Border x:Name="Border"
                CornerRadius="2"
                Padding="2"
                BorderThickness="1">
          <Border.Background>
            <SolidColorBrush Color="{DynamicResource ControlLightColor}" />
          </Border.Background>
          <Border.BorderBrush>
            <SolidColorBrush Color="{DynamicResource BorderMediumColor}" />
          </Border.BorderBrush>
          <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
              <VisualState x:Name="Normal" />
              <VisualState x:Name="Disabled" />
              <VisualState x:Name="MouseOver" />
            </VisualStateGroup>
          </VisualStateManager.VisualStateGroups>
          <ScrollViewer x:Name="PART_ContentHost" />
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

W poprzednim przykładzie użyto co najmniej jednego z następujących zasobów.

<!--Control colors.-->
<Color x:Key="WindowColor">#FFE8EDF9</Color>
<Color x:Key="ContentAreaColorLight">#FFC5CBF9</Color>
<Color x:Key="ContentAreaColorDark">#FF7381F9</Color>

<Color x:Key="DisabledControlLightColor">#FFE8EDF9</Color>
<Color x:Key="DisabledControlDarkColor">#FFC5CBF9</Color>
<Color x:Key="DisabledForegroundColor">#FF888888</Color>

<Color x:Key="SelectedBackgroundColor">#FFC5CBF9</Color>
<Color x:Key="SelectedUnfocusedColor">#FFDDDDDD</Color>

<Color x:Key="ControlLightColor">White</Color>
<Color x:Key="ControlMediumColor">#FF7381F9</Color>
<Color x:Key="ControlDarkColor">#FF211AA9</Color>

<Color x:Key="ControlMouseOverColor">#FF3843C4</Color>
<Color x:Key="ControlPressedColor">#FF211AA9</Color>


<Color x:Key="GlyphColor">#FF444444</Color>
<Color x:Key="GlyphMouseOver">sc#1, 0.004391443, 0.002428215, 0.242281124</Color>

<!--Border colors-->
<Color x:Key="BorderLightColor">#FFCCCCCC</Color>
<Color x:Key="BorderMediumColor">#FF888888</Color>
<Color x:Key="BorderDarkColor">#FF444444</Color>

<Color x:Key="PressedBorderLightColor">#FF888888</Color>
<Color x:Key="PressedBorderDarkColor">#FF444444</Color>

<Color x:Key="DisabledBorderLightColor">#FFAAAAAA</Color>
<Color x:Key="DisabledBorderDarkColor">#FF888888</Color>

<Color x:Key="DefaultBorderBrushDarkColor">Black</Color>

<!--Control-specific resources.-->
<Color x:Key="HeaderTopColor">#FFC5CBF9</Color>
<Color x:Key="DatagridCurrentCellBorderColor">Black</Color>
<Color x:Key="SliderTrackDarkColor">#FFC5CBF9</Color>

<Color x:Key="NavButtonFrameColor">#FF3843C4</Color>

<LinearGradientBrush x:Key="MenuPopupBrush"
                     EndPoint="0.5,1"
                     StartPoint="0.5,0">
  <GradientStop Color="{DynamicResource ControlLightColor}"
                Offset="0" />
  <GradientStop Color="{DynamicResource ControlMediumColor}"
                Offset="0.5" />
  <GradientStop Color="{DynamicResource ControlLightColor}"
                Offset="1" />
</LinearGradientBrush>

<LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill"
                     StartPoint="0,0"
                     EndPoint="1,0">
  <LinearGradientBrush.GradientStops>
    <GradientStopCollection>
      <GradientStop Color="#000000FF"
                    Offset="0" />
      <GradientStop Color="#600000FF"
                    Offset="0.4" />
      <GradientStop Color="#600000FF"
                    Offset="0.6" />
      <GradientStop Color="#000000FF"
                    Offset="1" />
    </GradientStopCollection>
  </LinearGradientBrush.GradientStops>
</LinearGradientBrush>

Aby zapoznać się z kompletnym przykładem, zobacz Styling with ControlTemplates Sample.

Zobacz także