C# 边框刷到组合框

C# 边框刷到组合框,c#,wpf,combobox,border,brush,C#,Wpf,Combobox,Border,Brush,我需要一些帮助 我有两个控件,一个ComboBox和一个TextBox,我需要将BorderBrush属性更改为其他颜色,使用de-TextBox可以完美地工作,但使用ComboBox则不行。这是我的密码 <ComboBox x:Name="cmbCombo" HorizontalAlignment="Left" Margin="155,98,0,0" VerticalAlignment="Top" Width="120" /> <Text

我需要一些帮助

我有两个控件,一个ComboBox和一个TextBox,我需要将BorderBrush属性更改为其他颜色,使用de-TextBox可以完美地工作,但使用ComboBox则不行。这是我的密码

<ComboBox x:Name="cmbCombo" HorizontalAlignment="Left" Margin="155,98,0,0" VerticalAlignment="Top" Width="120" />                   
<TextBox x:Name="txtCaja" HorizontalAlignment="Left" Height="23" Margin="158,56,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
<Button Content="Button" HorizontalAlignment="Left" Margin="174,155,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>


cmbCombo.BorderThickness = new Thickness(3);
cmbCombo.BorderBrush = Brushes.OrangeRed;
txtCaja.BorderThickness = new Thickness(3);
txtCaja.BorderBrush = Brushes.OrangeRed;

cmbCombo.BorderThickness=新厚度(3);
cmbCombo.BorderBrush=笔刷.oranged;
txtCaja.BorderThickness=新厚度(3);
txtCaja.BorderBrush=笔刷.oranged;

谢谢大家。

尝试将
cmbCombo
组合框包装在
边框中

<Border x:Name="comboBorder" HorizontalAlignment="Left"
          Margin="155,98,0,0" VerticalAlignment="Top">
   <ComboBox x:Name="cmbCombo" Width="120" />
</Border>

可以设置属性
BorderBrush
以生成所需的颜色或笔刷:

<ComboBox Margin="10" BorderBrush="Red">
  <ComboBoxItem>No Device Selected</ComboBoxItem>
</ComboBox>
更新:

对于
windows8
,您应该在
组合框的
Controltemplate
中写入:

BasedOn="{StaticResource {x:Type ComboBox}}"
<ComboBox Style="{DynamicResource ComboBoxStyle1}" >                
   <ComboBoxItem Content="1"/>
   <ComboBoxItem Content="2"/>
   <ComboBoxItem Content="3"/>
</ComboBox>
例如:

<Style x:Key="ComboBoxStyle1" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.CanContentScroll" Value="True"/>
<Setter Property="TextElement.Foreground" Value="Black"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type ComboBox}">
            <Border BorderBrush="{TemplateBinding BorderBrush}"
        BorderThickness="{TemplateBinding BorderThickness}">
            <Grid>
                <ToggleButton x:Name="ToggleButton" Grid.Column="2"
                    ClickMode="Press" Focusable="False"
                    IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                    Template="{StaticResource ComboBoxToggleButtonTemplate}"/>

                <ContentPresenter x:Name="ContentSite" Margin="5, 3, 23, 3" IsHitTestVisible="False"
                    HorizontalAlignment="Left" VerticalAlignment="Center"                              
                    Content="{TemplateBinding SelectionBoxItem}" 
                    ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                    ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"/>

                <TextBox x:Name="PART_EditableTextBox" Margin="3, 3, 23, 3"                     
                    IsReadOnly="{TemplateBinding IsReadOnly}"
                    Visibility="Hidden" Background="Transparent"
                    HorizontalAlignment="Left" VerticalAlignment="Center"
                    Focusable="True" >
                    <TextBox.Template>
                        <ControlTemplate TargetType="{x:Type TextBox}" >
                            <Border x:Name="PART_ContentHost" Focusable="False" />
                        </ControlTemplate>
                    </TextBox.Template>
                </TextBox>
                <!-- Popup showing items -->
                <Popup x:Name="Popup" Placement="Bottom"
                    Focusable="False" AllowsTransparency="True"
                    IsOpen="{TemplateBinding IsDropDownOpen}"
                    PopupAnimation="Slide" >
                    <Grid x:Name="DropDown" SnapsToDevicePixels="True"
                        MinWidth="{TemplateBinding ActualWidth}"
                        MaxHeight="{TemplateBinding MaxDropDownHeight}">
                        <Border x:Name="DropDownBorder" Background="Transparent" Margin="0, 1, 0, 0"
                            CornerRadius="0" BorderThickness="1,1,1,1" 
                            BorderBrush="{StaticResource ComboBoxNormalBorderBrush}"/>
                        <ScrollViewer Margin="4" SnapsToDevicePixels="True">
                            <ItemsPresenter KeyboardNavigation.DirectionalNavigation="Contained" />
                        </ScrollViewer>
                    </Grid>
                </Popup>
            </Grid> 
             </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="HasItems" Value="False">
                    <Setter Property="MinHeight" TargetName="DropDownBorder" Value="95"/>
                </Trigger>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="TextElement.Foreground" Value="{StaticResource ComboBoxDisabledForegroundBrush}"/>
                </Trigger>
                <Trigger Property="IsGrouping" Value="True">
                    <Setter Property="ScrollViewer.CanContentScroll" Value="False"/>
                </Trigger>
                <Trigger Property="IsEditable" Value="True">
                    <Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
                    <Setter Property="Visibility" TargetName="PART_EditableTextBox" Value="Visible"/>
                    <Setter Property="Visibility" TargetName="ContentSite" Value="Hidden"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Setter.Value>
</Setter>
</Style>
或:


定义“不工作”?可能是重复的。@MagnunStalin您使用的是
ComboBox
的默认模板吗?我认为这是Windows 8的问题视觉样式,因为在Windows 7中它工作得很好。@MagnunStalin请参阅更新部分。本节包含有关Windows 8和组合框样式的信息。
<Style x:Key="ComboBoxStyle1" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.CanContentScroll" Value="True"/>
<Setter Property="TextElement.Foreground" Value="Black"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type ComboBox}">
            <Border BorderBrush="{TemplateBinding BorderBrush}"
        BorderThickness="{TemplateBinding BorderThickness}">
            <Grid>
                <ToggleButton x:Name="ToggleButton" Grid.Column="2"
                    ClickMode="Press" Focusable="False"
                    IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                    Template="{StaticResource ComboBoxToggleButtonTemplate}"/>

                <ContentPresenter x:Name="ContentSite" Margin="5, 3, 23, 3" IsHitTestVisible="False"
                    HorizontalAlignment="Left" VerticalAlignment="Center"                              
                    Content="{TemplateBinding SelectionBoxItem}" 
                    ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                    ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"/>

                <TextBox x:Name="PART_EditableTextBox" Margin="3, 3, 23, 3"                     
                    IsReadOnly="{TemplateBinding IsReadOnly}"
                    Visibility="Hidden" Background="Transparent"
                    HorizontalAlignment="Left" VerticalAlignment="Center"
                    Focusable="True" >
                    <TextBox.Template>
                        <ControlTemplate TargetType="{x:Type TextBox}" >
                            <Border x:Name="PART_ContentHost" Focusable="False" />
                        </ControlTemplate>
                    </TextBox.Template>
                </TextBox>
                <!-- Popup showing items -->
                <Popup x:Name="Popup" Placement="Bottom"
                    Focusable="False" AllowsTransparency="True"
                    IsOpen="{TemplateBinding IsDropDownOpen}"
                    PopupAnimation="Slide" >
                    <Grid x:Name="DropDown" SnapsToDevicePixels="True"
                        MinWidth="{TemplateBinding ActualWidth}"
                        MaxHeight="{TemplateBinding MaxDropDownHeight}">
                        <Border x:Name="DropDownBorder" Background="Transparent" Margin="0, 1, 0, 0"
                            CornerRadius="0" BorderThickness="1,1,1,1" 
                            BorderBrush="{StaticResource ComboBoxNormalBorderBrush}"/>
                        <ScrollViewer Margin="4" SnapsToDevicePixels="True">
                            <ItemsPresenter KeyboardNavigation.DirectionalNavigation="Contained" />
                        </ScrollViewer>
                    </Grid>
                </Popup>
            </Grid> 
             </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="HasItems" Value="False">
                    <Setter Property="MinHeight" TargetName="DropDownBorder" Value="95"/>
                </Trigger>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="TextElement.Foreground" Value="{StaticResource ComboBoxDisabledForegroundBrush}"/>
                </Trigger>
                <Trigger Property="IsGrouping" Value="True">
                    <Setter Property="ScrollViewer.CanContentScroll" Value="False"/>
                </Trigger>
                <Trigger Property="IsEditable" Value="True">
                    <Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
                    <Setter Property="Visibility" TargetName="PART_EditableTextBox" Value="Visible"/>
                    <Setter Property="Visibility" TargetName="ContentSite" Value="Hidden"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Setter.Value>
</Setter>
</Style>
<ComboBox Style="{DynamicResource ComboBoxStyle1}" >                
   <ComboBoxItem Content="1"/>
   <ComboBoxItem Content="2"/>
   <ComboBoxItem Content="3"/>
</ComboBox>
private void ComboBox_Loaded(Object sender, RoutedEventArgs e)
{
    var comboBox = sender as ComboBox;
    var comboBoxTemplate = comboBox.Template;
    var toggleButton = comboBoxTemplate.FindName("toggleButton", comboBox) as ToggleButton;
    var toggleButtonTemplate = toggleButton.Template;
    var border = toggleButtonTemplate.FindName("templateRoot", toggleButton) as Border;

    border.Background = new SolidColorBrush(Colors.Red);
}