2017-03-13 56 views
0

は、私のコントロールのイメージは次のとおりです。WPFのTextBoxとコンボボックス(背景色が同じに見えていない)

enter image description here

あなたはコンボボックスはかなり異なるテキストボックスことで見ることができるようにたとえ同じ色を使っていても、同じように見えるようにどのように達成できるのか分かりません。ここで

は私のテキストボックススタイルのコードです:

<Style x:Key="TextBoxStyle1" TargetType="{x:Type TextBox}"> 
    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Background" Value="#E0E4E5" /> 
      <Setter Property="BorderBrush" Value="#E0E4E5" /> 
      <Setter Property="BorderThickness" Value="1.5" /> 
     </Trigger> 
    </Style.Triggers> 

    <Setter Property="BorderBrush" Value="#0091EA"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/> 
    <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/> 
    <Setter Property="Padding" Value="1"/> 
    <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/> 
    <Setter Property="HorizontalContentAlignment" Value="Left"/> 
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
    <Setter Property="AllowDrop" Value="true"/> 
    <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/> 
    <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TextBox}"> 
       <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" 
           Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> 
        <ScrollViewer x:Name="PART_ContentHost"/> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
         <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

、ここでMY COMBOBOXのコードです:私は、彼らが無効になっているときにそれらが同じに見えるように実行する必要があり何

<Style x:Key="ComboBoxStyle" TargetType="{x:Type ComboBox}"> 
     <Style.Triggers> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="Background" Value="#E0E4E5" /> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="True"> 
         <Setter Property="Background" Value="Transparent" /> 
        </Trigger> 
       </Style.Triggers> 
    </Style> 

?それは...

あるべきとどういうわけか、色が見ていない私はまた私のコンボボックスのスタイルではなく、私は矢印を失うことだし、それは、これを適用した後のComboBox以上のTextBoxを見るよりも、テンプレートを設定してみました:

<Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ComboBox}"> 
         <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" 
            Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> 
          <ScrollViewer x:Name="PART_ContentHost"/> 
         </Border> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsEnabled" Value="false"> 
           <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 

答えて

1

これは、Windows 8のWindows 7上で動作するはずですし、後であなたがComboBoxの全体ControlTemplateをオーバーライドする必要が

<ComboBox> 
    <ComboBox.Resources> 
     <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#E0E4E5" /> 
    </ComboBox.Resources> 
... 
</ComboBox> 

:あなたはSystemColors.ControlBrushKeyブラシを上書きしようとすることができます。 Visual Studio 2012以降でデザインモードでComboBox要素を右クリックし、[テンプレートの編集] - > [コピーの編集]を選択して、既定のテンプレートをXAMLマークアップにコピーし、必要に応じて編集できます。 StyleまたはControlTemplateIsEnabledトリガーを探します。

詳細については、次のブログ記事を参照してください。https://blog.magnusmontin.net/2014/04/30/changing-the-background-colour-of-a-combobox-in-wpf-on-windows-8/

関連する問題