2017-02-13 4 views
1

테두리의 색상을 실제로 변경하지 않는 테두리 브러시가 있습니다. 여기 내 콤보 상자 용 XAML이 있습니다. 어떤 아이디어?C# WPF BorderBrush가 색상을 설정하지 않습니다.

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

답변

2

당신은 그 테두리 색상을 변경할 수하기 위해 ComboBoxControlTemplate을 수정해야합니다. 그 이유에 대한 자세한 내용은 https://blog.magnusmontin.net/2014/04/30/changing-the-background-colour-of-a-combobox-in-wpf-on-windows-8/을 참조하십시오.

Visual Studio의 디자인 모드에서 ComboBox 요소를 마우스 오른쪽 단추로 클릭하고 "템플릿 편집"-> "복사본 편집 ..."을 선택하여 기본 템플릿을 XAML 태그에 복사 한 후 다음과 같이 수정할 수 있습니다 귀하의 요구 사항에 따라.

많은 XAML이 인용되어 있지만 여기에 있습니다. "ComboBox.Static.Editable.Border"라는 리소스를 찾고이 필드의 Color 속성을 변경하여 편집 가능한 테두리 색을 변경합니다 ComboBox. PresentationFramework.Aero2.dll에 대한 참조를 추가하는 것을 잊지 마십시오.

<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> 

기본 템플릿은 Windows의 버전에 따라 다릅니다. 위의 내용은 Windows 10에 적용됩니다.

아니요, 단순히 속성을 설정하거나 비슷한 작업을 수행하여 테두리 색을 변경하는 방법이 없습니다. 템플릿을 수정해야합니다.

+1

또 다른 좋은 대답은 올바른 방법을 배우는 고통을 피하기 위해 배제되었습니다. –

2

ComboBox (또는 다른 컨트롤) 주위에 빨간색 테두리가 나타나게하려면 Border을 사용할 수 있습니다.

<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

보기 및 응용 프로그램의 모든 컨트롤마다 테두리를 사용하는 것은 끔찍한 해결책입니다. @ mm8 정답을 지적했다. –

+1

귀하의 요구 사항에 따라 다릅니다. 단일 ComboBox에 빨간색 테두리를 만들어야하는 경우 모든 'ControlTemplate'오버 헤드를 갖기를 원하지 않습니다. 모든 콤보 상자를 변경하려는 경우 대/소문자가 다르지만 OP는 일반적인 방법을 묻지 않는 것 같습니다 ... – Mat

+0

ComboBox 주위에 * 다른 * 경계 *가 추가됩니다. ComboBox 자체의 실제 테두리는 변경되지 않습니다. – mm8