2017-02-13 5 views
1

Ich habe einen Borderbrush, der die Farbe des Rahmens nicht tatsächlich ändern wird. Hier ist mein XAML für die Combobox. Irgendwelche Ideen?C# WPF BorderBrush wird keine Farbe setzen

<ComboBox IsEditable="True" IsReadOnly="False" 
         Text="{Binding Model.Number}" ItemsSource="{Binding Item}" 
         SelectedItem="{Binding Model.Number}"  
         VerticalAlignment="Top" 
         BorderBrush="Red" 
         BorderThickness="2"> 
</ComboBox> 

Antwort

2

Sie müssen die ControlTemplate der ComboBox ändern, um der Lage sein, seine Grenzfarbe zu ändern. Sie können hier mehr darüber lesen: https://blog.magnusmontin.net/2014/04/30/changing-the-background-colour-of-a-combobox-in-wpf-on-windows-8/.

Sie können die Standardvorlage in Ihr XAML-Markup kopieren, indem Sie im Designmodus in Visual Studio mit der rechten Maustaste auf das Element ComboBox klicken und "Vorlage bearbeiten" -> "Kopie bearbeiten ..." auswählen und dann als ändern nach Ihren Anforderungen.

Es ist eine Menge XAML Zitat, aber hier ist es. Suchen Sie nach einer Ressource mit dem Namen "ComboBox.Static.Editable.Border", und ändern Sie die -Eigenschaft von diesem, um die Rahmenfarbe der bearbeitbaren ComboBox zu ändern. Vergessen Sie nicht, einen Verweis auf PresentationFramework.Aero2.dll hinzuzufügen.

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="300" Width="300"> 
    <Window.Resources> 
     <Style x:Key="FocusVisual"> 
      <Setter Property="Control.Template"> 
       <Setter.Value> 
        <ControlTemplate> 
         <Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
     <LinearGradientBrush x:Key="ComboBox.Static.Background" EndPoint="0,1" StartPoint="0,0"> 
      <GradientStop Color="#FFF0F0F0" Offset="0.0"/> 
      <GradientStop Color="#FFE5E5E5" Offset="1.0"/> 
     </LinearGradientBrush> 
     <SolidColorBrush x:Key="ComboBox.Static.Border" Color="#FFACACAC"/> 
     <SolidColorBrush x:Key="ComboBox.Static.Editable.Background" Color="#FFFFFFFF"/> 
     <SolidColorBrush x:Key="ComboBox.Static.Editable.Border" Color="Red"/> 
     <SolidColorBrush x:Key="ComboBox.Static.Editable.Button.Background" Color="Transparent"/> 
     <SolidColorBrush x:Key="ComboBox.Static.Editable.Button.Border" Color="Transparent"/> 
     <SolidColorBrush x:Key="ComboBox.MouseOver.Glyph" Color="#FF000000"/> 
     <LinearGradientBrush x:Key="ComboBox.MouseOver.Background" EndPoint="0,1" StartPoint="0,0"> 
      <GradientStop Color="#FFECF4FC" Offset="0.0"/> 
      <GradientStop Color="#FFDCECFC" Offset="1.0"/> 
     </LinearGradientBrush> 
     <SolidColorBrush x:Key="ComboBox.MouseOver.Border" Color="#FF7EB4EA"/> 
     <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Background" Color="#FFFFFFFF"/> 
     <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Border" Color="#FF7EB4EA"/> 
     <LinearGradientBrush x:Key="ComboBox.MouseOver.Editable.Button.Background" EndPoint="0,1" StartPoint="0,0"> 
      <GradientStop Color="#FFEBF4FC" Offset="0.0"/> 
      <GradientStop Color="#FFDCECFC" Offset="1.0"/> 
     </LinearGradientBrush> 
     <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Button.Border" Color="#FF7EB4EA"/> 
     <SolidColorBrush x:Key="ComboBox.Pressed.Glyph" Color="#FF000000"/> 
     <LinearGradientBrush x:Key="ComboBox.Pressed.Background" EndPoint="0,1" StartPoint="0,0"> 
      <GradientStop Color="#FFDAECFC" Offset="0.0"/> 
      <GradientStop Color="#FFC4E0FC" Offset="1.0"/> 
     </LinearGradientBrush> 
     <SolidColorBrush x:Key="ComboBox.Pressed.Border" Color="#FF569DE5"/> 
     <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Background" Color="#FFFFFFFF"/> 
     <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Border" Color="#FF569DE5"/> 
     <LinearGradientBrush x:Key="ComboBox.Pressed.Editable.Button.Background" EndPoint="0,1" StartPoint="0,0"> 
      <GradientStop Color="#FFDAEBFC" Offset="0.0"/> 
      <GradientStop Color="#FFC4E0FC" Offset="1.0"/> 
     </LinearGradientBrush> 
     <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Button.Border" Color="#FF569DE5"/> 
     <SolidColorBrush x:Key="ComboBox.Disabled.Glyph" Color="#FFBFBFBF"/> 
     <SolidColorBrush x:Key="ComboBox.Disabled.Background" Color="#FFF0F0F0"/> 
     <SolidColorBrush x:Key="ComboBox.Disabled.Border" Color="#FFD9D9D9"/> 
     <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Background" Color="#FFFFFFFF"/> 
     <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Border" Color="#FFBFBFBF"/> 
     <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Button.Background" Color="Transparent"/> 
     <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Button.Border" Color="Transparent"/> 
     <SolidColorBrush x:Key="ComboBox.Static.Glyph" Color="#FF606060"/> 
     <Style x:Key="ComboBoxToggleButton" TargetType="{x:Type ToggleButton}"> 
      <Setter Property="OverridesDefaultStyle" Value="true"/> 
      <Setter Property="IsTabStop" Value="false"/> 
      <Setter Property="Focusable" Value="false"/> 
      <Setter Property="ClickMode" Value="Press"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ToggleButton}"> 
         <Border x:Name="templateRoot" BorderBrush="{StaticResource ComboBox.Static.Border}" BorderThickness="{TemplateBinding BorderThickness}" Background="{StaticResource ComboBox.Static.Background}" SnapsToDevicePixels="true"> 
          <Border x:Name="splitBorder" BorderBrush="Transparent" BorderThickness="1" HorizontalAlignment="Right" Margin="0" SnapsToDevicePixels="true" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"> 
           <Path x:Name="arrow" Data="F1 M 0,0 L 2.667,2.66665 L 5.3334,0 L 5.3334,-1.78168 L 2.6667,0.88501 L0,-1.78168 L0,0 Z" Fill="{StaticResource ComboBox.Static.Glyph}" HorizontalAlignment="Center" Margin="0" VerticalAlignment="Center"/> 
          </Border> 
         </Border> 
         <ControlTemplate.Triggers> 
          <MultiDataTrigger> 
           <MultiDataTrigger.Conditions> 
            <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/> 
            <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="false"/> 
            <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="false"/> 
            <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="true"/> 
           </MultiDataTrigger.Conditions> 
           <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Static.Editable.Background}"/> 
           <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Static.Editable.Border}"/> 
           <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Static.Editable.Button.Background}"/> 
           <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.Static.Editable.Button.Border}"/> 
          </MultiDataTrigger> 
          <Trigger Property="IsMouseOver" Value="true"> 
           <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.MouseOver.Glyph}"/> 
          </Trigger> 
          <MultiDataTrigger> 
           <MultiDataTrigger.Conditions> 
            <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/> 
            <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/> 
           </MultiDataTrigger.Conditions> 
           <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Background}"/> 
           <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Border}"/> 
          </MultiDataTrigger> 
          <MultiDataTrigger> 
           <MultiDataTrigger.Conditions> 
            <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/> 
            <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/> 
           </MultiDataTrigger.Conditions> 
           <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Editable.Background}"/> 
           <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Editable.Border}"/> 
           <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.MouseOver.Editable.Button.Background}"/> 
           <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.MouseOver.Editable.Button.Border}"/> 
          </MultiDataTrigger> 
          <Trigger Property="IsPressed" Value="true"> 
           <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.Pressed.Glyph}"/> 
          </Trigger> 
          <MultiDataTrigger> 
           <MultiDataTrigger.Conditions> 
            <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/> 
            <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/> 
           </MultiDataTrigger.Conditions> 
           <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Background}"/> 
           <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Border}"/> 
          </MultiDataTrigger> 
          <MultiDataTrigger> 
           <MultiDataTrigger.Conditions> 
            <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/> 
            <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/> 
           </MultiDataTrigger.Conditions> 
           <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Editable.Background}"/> 
           <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Editable.Border}"/> 
           <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Pressed.Editable.Button.Background}"/> 
           <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.Pressed.Editable.Button.Border}"/> 
          </MultiDataTrigger> 
          <Trigger Property="IsEnabled" Value="false"> 
           <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.Disabled.Glyph}"/> 
          </Trigger> 
          <MultiDataTrigger> 
           <MultiDataTrigger.Conditions> 
            <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/> 
            <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/> 
           </MultiDataTrigger.Conditions> 
           <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Background}"/> 
           <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Border}"/> 
          </MultiDataTrigger> 
          <MultiDataTrigger> 
           <MultiDataTrigger.Conditions> 
            <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/> 
            <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/> 
           </MultiDataTrigger.Conditions> 
           <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Editable.Background}"/> 
           <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Editable.Border}"/> 
           <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Disabled.Editable.Button.Background}"/> 
           <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.Disabled.Editable.Button.Border}"/> 
          </MultiDataTrigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
     <ControlTemplate x:Key="ComboBoxTemplate" TargetType="{x:Type ComboBox}"> 
      <Grid x:Name="templateRoot" SnapsToDevicePixels="true"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/> 
       </Grid.ColumnDefinitions> 
       <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom"> 
        <Themes:SystemDropShadowChrome x:Name="shadow" Color="Transparent" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=templateRoot}"> 
         <Border x:Name="dropDownBorder" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"> 
          <ScrollViewer x:Name="DropDownScrollViewer"> 
           <Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled"> 
            <Canvas x:Name="canvas" HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0"> 
             <Rectangle x:Name="opaqueRect" Fill="{Binding Background, ElementName=dropDownBorder}" Height="{Binding ActualHeight, ElementName=dropDownBorder}" Width="{Binding ActualWidth, ElementName=dropDownBorder}"/> 
            </Canvas> 
            <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
           </Grid> 
          </ScrollViewer> 
         </Border> 
        </Themes:SystemDropShadowChrome> 
       </Popup> 
       <ToggleButton x:Name="toggleButton" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButton}"/> 
       <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
      </Grid> 
      <ControlTemplate.Triggers> 
       <Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true"> 
        <Setter Property="Margin" TargetName="shadow" Value="0,0,5,5"/> 
        <Setter Property="Color" TargetName="shadow" Value="#71000000"/> 
       </Trigger> 
       <Trigger Property="HasItems" Value="false"> 
        <Setter Property="Height" TargetName="dropDownBorder" Value="95"/> 
       </Trigger> 
       <MultiTrigger> 
        <MultiTrigger.Conditions> 
         <Condition Property="IsGrouping" Value="true"/> 
         <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false"/> 
        </MultiTrigger.Conditions> 
        <Setter Property="ScrollViewer.CanContentScroll" Value="false"/> 
       </MultiTrigger> 
       <Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false"> 
        <Setter Property="Canvas.Top" TargetName="opaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}"/> 
        <Setter Property="Canvas.Left" TargetName="opaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
     <SolidColorBrush x:Key="TextBox.Static.Background" Color="#FFFFFFFF"/> 
     <Style x:Key="ComboBoxEditableTextBox" TargetType="{x:Type TextBox}"> 
      <Setter Property="OverridesDefaultStyle" Value="true"/> 
      <Setter Property="AllowDrop" Value="true"/> 
      <Setter Property="MinWidth" Value="0"/> 
      <Setter Property="MinHeight" Value="0"/> 
      <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
      <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/> 
      <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type TextBox}"> 
         <ScrollViewer x:Name="PART_ContentHost" Background="Transparent" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
     <ControlTemplate x:Key="ComboBoxEditableTemplate" TargetType="{x:Type ComboBox}"> 
      <Grid x:Name="templateRoot" SnapsToDevicePixels="true"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/> 
       </Grid.ColumnDefinitions> 
       <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom"> 
        <Themes:SystemDropShadowChrome x:Name="shadow" Color="Transparent" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=templateRoot}"> 
         <Border x:Name="dropDownBorder" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"> 
          <ScrollViewer x:Name="DropDownScrollViewer"> 
           <Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled"> 
            <Canvas x:Name="canvas" HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0"> 
             <Rectangle x:Name="opaqueRect" Fill="{Binding Background, ElementName=dropDownBorder}" Height="{Binding ActualHeight, ElementName=dropDownBorder}" Width="{Binding ActualWidth, ElementName=dropDownBorder}"/> 
            </Canvas> 
            <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
           </Grid> 
          </ScrollViewer> 
         </Border> 
        </Themes:SystemDropShadowChrome> 
       </Popup> 
       <ToggleButton x:Name="toggleButton" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButton}"/> 
       <Border x:Name="border" Background="{StaticResource TextBox.Static.Background}" Margin="{TemplateBinding BorderThickness}"> 
        <TextBox x:Name="PART_EditableTextBox" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Margin="{TemplateBinding Padding}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/> 
       </Border> 
      </Grid> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsEnabled" Value="false"> 
        <Setter Property="Opacity" TargetName="border" Value="0.56"/> 
       </Trigger> 
       <Trigger Property="IsKeyboardFocusWithin" Value="true"> 
        <Setter Property="Foreground" Value="Black"/> 
       </Trigger> 
       <Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true"> 
        <Setter Property="Margin" TargetName="shadow" Value="0,0,5,5"/> 
        <Setter Property="Color" TargetName="shadow" Value="#71000000"/> 
       </Trigger> 
       <Trigger Property="HasItems" Value="false"> 
        <Setter Property="Height" TargetName="dropDownBorder" Value="95"/> 
       </Trigger> 
       <MultiTrigger> 
        <MultiTrigger.Conditions> 
         <Condition Property="IsGrouping" Value="true"/> 
         <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false"/> 
        </MultiTrigger.Conditions> 
        <Setter Property="ScrollViewer.CanContentScroll" Value="false"/> 
       </MultiTrigger> 
       <Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false"> 
        <Setter Property="Canvas.Top" TargetName="opaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}"/> 
        <Setter Property="Canvas.Left" TargetName="opaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
     <Style x:Key="ComboBoxStyle1" TargetType="{x:Type ComboBox}"> 
      <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/> 
      <Setter Property="Background" Value="{StaticResource ComboBox.Static.Background}"/> 
      <Setter Property="BorderBrush" Value="{StaticResource ComboBox.Static.Border}"/> 
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/> 
      <Setter Property="BorderThickness" Value="1"/> 
      <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> 
      <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> 
      <Setter Property="Padding" Value="6,3,5,3"/> 
      <Setter Property="ScrollViewer.CanContentScroll" Value="true"/> 
      <Setter Property="ScrollViewer.PanningMode" Value="Both"/> 
      <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> 
      <Setter Property="Template" Value="{StaticResource ComboBoxTemplate}"/> 
      <Style.Triggers> 
       <Trigger Property="IsEditable" Value="true"> 
        <Setter Property="IsTabStop" Value="false"/> 
        <Setter Property="Padding" Value="2"/> 
        <Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplate}"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 
    <Grid> 
     <ComboBox Style="{DynamicResource ComboBoxStyle1}" IsEditable="True" /> 
    </Grid> 
</Window> 

Es sollte auch erwähnt werden, dass die Standardvorlage zwischen verschiedenen Versionen unter Windows unterscheidet. Das obige gilt für Windows 10.

Und nein, es gibt keine Möglichkeit, die Rahmenfarbe zu ändern, indem Sie einfach eine Eigenschaft festlegen oder etwas ähnliches tun :) Sie müssen die Vorlage ändern.

+1

Eine andere gute Antwort ausgeschlossen, um den Schmerz zu vermeiden, den richtigen Weg zu lernen. –

2

Wenn Sie nur einen roten Rahmen um Ihre ComboBox (oder ein anderes Steuerelement) möchten, können Sie eine Border verwenden.

<Border BorderBrush="Red" 
      BorderThickness="2"> 
    <ComboBox IsEditable="True" 
       IsReadOnly="False" 
       Text="{Binding Model.Number}" 
       ItemsSource="{Binding Item}" 
       SelectedItem="{Binding Model.Number}" 
       VerticalAlignment="Top"></ComboBox> 
</Border> 
+1

Um einen Rahmen für jedes Steuerelement auf Ihrer Ansicht und Anwendung zu verwenden, ist eine schreckliche Lösung. @ mm8 zeigte auf die richtige Antwort. –

+1

Hängt von Ihren Anforderungen ab. Wenn Sie nur einen roten Rahmen für eine einzelne ComboBox erstellen müssen, möchten Sie nicht den gesamten "ControlTemplate" Overhead haben. Wenn Sie alle ComboBoxen ändern möchten, ist der Fall anders, aber OP scheint nicht nach einem generischen Weg zu fragen ... – Mat

+0

Dies fügt * einen anderen * Rahmen * um * die ComboBox hinzu. Es ändert nicht den tatsächlichen Rahmen der ComboBox selbst. – mm8

Verwandte Themen