2017-07-12 12 views
0

Ich versuche, einen wpf datepicker in meinen Ideen zu stylen, habe aber Probleme mit der Deaktivierung des inneren Rahmens. Wenn ich den Mauszeiger über den Datumszeiger halte oder hineinklicke, erscheint ein hellblauer Rahmen um den Eingabebereich herum. Sie können es deutlich auf dem Screenshot sehen. Wie kann ich diese Grenze deaktivieren?WPF DatePicker Innenrand deaktivieren

enter image description here

+1

Versuchen Sie, den Stil unter Verwendung von Mischung zu extrahieren für Visual Studio. Und nehmen Sie eine Beute, welchen Stil es gibt und versuchen Sie, die Grenzen zu deaktivieren oder ihnen eine andere Farbe zu geben. Dies kann auch ein Chrome-Ding sein, das schwieriger zu stylen ist. –

+0

Leider muss ich Visual Studio Express aufgrund meiner Arbeitsumgebung verwenden. Wie ich verstanden habe, ist es nicht möglich, Blend unter Express zu verwenden? –

+0

Ich fand heraus, wie man ohne Mischung zu stylen extrahiert. gerade folgte der folgende Thread: https://stackoverflow.com/questions/8825030/how-to-extract-default-control-template-in-visual-studio –

Antwort

1

Aufschalten der Vorlage des DatePickerTextBox und die visuellen Zustandsübergänge entfernen, die den blauen Rand erscheinen:

<DatePicker> 
    <DatePicker.Resources> 
     <Style TargetType="DatePickerTextBox"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type DatePickerTextBox}"> 
         <Grid> 
          <Grid.Resources> 
           <SolidColorBrush x:Key="WatermarkBrush" Color="#FFAAAAAA"/> 
          </Grid.Resources> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="CommonStates"> 
            <VisualStateGroup.Transitions> 
             <VisualTransition GeneratedDuration="0"/> 
             <VisualTransition GeneratedDuration="0:0:0.1" To="MouseOver"/> 
            </VisualStateGroup.Transitions> 
            <VisualState x:Name="Normal"/> 
            <VisualState x:Name="MouseOver" /> 
           </VisualStateGroup> 
           <VisualStateGroup x:Name="WatermarkStates"> 
            <VisualStateGroup.Transitions> 
             <VisualTransition GeneratedDuration="0"/> 
            </VisualStateGroup.Transitions> 
            <VisualState x:Name="Unwatermarked"/> 
            <VisualState x:Name="Watermarked"> 
             <Storyboard> 
              <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ContentElement"/> 
              <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_Watermark"/> 
             </Storyboard> 
            </VisualState> 
           </VisualStateGroup> 
           <VisualStateGroup x:Name="FocusStates"> 
            <VisualStateGroup.Transitions> 
             <VisualTransition GeneratedDuration="0"/> 
            </VisualStateGroup.Transitions> 
            <VisualState x:Name="Unfocused"/> 
            <VisualState x:Name="Focused" /> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="1" Opacity="1" Padding="{TemplateBinding Padding}"> 
           <Grid x:Name="WatermarkContent" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> 
            <Border x:Name="ContentElement" BorderBrush="#FFFFFFFF" BorderThickness="1"/> 
            <Border x:Name="watermark_decorator" BorderBrush="#FFFFFFFF" BorderThickness="1"> 
             <ContentControl x:Name="PART_Watermark" Focusable="False" IsHitTestVisible="False" Opacity="0" Padding="2"/> 
            </Border> 
            <ScrollViewer x:Name="PART_ContentHost" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="0" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/> 
           </Grid> 
          </Border> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </DatePicker.Resources> 
</DatePicker> 

Und nein, es ist kein einfacher Weg :)

+0

Das ist es. Verrückt und nicht intuitiv meiner Meinung nach. Aber es funktioniert. Danke vielmals! Ich werde versuchen, es in eine statische Ressource zu setzen, um das Xaml sauberer zu halten –

0

Sie können die Standarddatepicker Control modifizieren, um die Steuerung ein einzigartiges Aussehen zu verleihen. Weitere Informationen finden Sie unter DatePicker Styles and Templates.

+0

Wie ich es richtig verstanden habe, möchte ich die blaue Grenze loswerden von ist Teil der Datepickertextbox. Also habe ich diesem Tag im Standardstil einen BorderBrush hinzugefügt. Dies legt nur den Rahmen um das Textfeld fest und hinterlässt den blauen Rahmen wie es ist –

Verwandte Themen