Borderbrush到ComboBox

时间:2016-05-03 14:10:53

标签: 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" />                   
<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;

谢谢大家。

2 个答案:

答案 0 :(得分:4)

尝试将cmbCombo ComboBox包装在Border

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

然后在您的代码隐藏中:

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

答案 1 :(得分:2)

可以将属性BorderBrush设置为制作所需的颜色或画笔:

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

结果:

Screenshot of combo box with red border

如果您想要更粗的边框,请使用BorderThickness属性:

<ComboBox Margin="10" BorderBrush="Red" BorderThickness="3">
  <ComboBoxItem>No Device Selected</ComboBoxItem>
</ComboBox>

<强>更新

对于Windows 8,您应该在Controltemplate的{​​{1}}中写信:

ComboBox

例如:

BasedOn="{StaticResource {x:Type 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> 中使用此Style

ComboBox

或:

<ComboBox Style="{DynamicResource ComboBoxStyle1}" >                
   <ComboBoxItem Content="1"/>
   <ComboBoxItem Content="2"/>
   <ComboBoxItem Content="3"/>
</ComboBox>