2013-03-13 3 views
1

Я создаю приложение WPF, в котором мне нужно Скрыть символ ComboBox's Arrow. Пожалуйста, помогите мне в любом теле.Скрыть ComboBox Arrow в WPF

+0

Нет собственного подхода? Позволь мне дать тебе подсказку. Восстановите 'ComboBox'. С помощью MS Blend это довольно простая задача. – DHN

ответ

1

Если вы хотите это сделать, вам необходимо восстановить ComboBox, как говорит DHN. Это один я использовал:

<!-- ComboBox style --> 
<Style x:Key="{x:Type ComboBox}" TargetType="ComboBox"> 
    <Setter Property="SnapsToDevicePixels" Value="true"/> 
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> 
    <Setter Property="ScrollViewer.CanContentScroll" Value="true"/> 
    <Setter Property="MinWidth" Value="120"/> 
    <Setter Property="Height" Value="25"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ComboBox"> 
       <Grid> 
        <ToggleButton 
        Name="ToggleButton" 
        Template="{DynamicResource ComboBoxToggleButton}" 
        Grid.Column="2" 
        Focusable="false" 
        IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}" 
        ClickMode="Press"> 
        </ToggleButton> 
        <ContentPresenter 
         Name="ContentSite" 
         IsHitTestVisible="False" 
         Content="{TemplateBinding SelectionBoxItem}" 
         ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" 
         ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" 
         Margin="3,3,23,3" 
         VerticalAlignment="Center" 
         HorizontalAlignment="Left" /> 
        <TextBox x:Name="PART_EditableTextBox" 
         Style="{x:Null}" 
         Template="{Binding Text}" 
         HorizontalAlignment="Left" 
         VerticalAlignment="Center" 
         Margin="3,3,23,3" 
         Focusable="True" 
         Background="Transparent" 
         Visibility="Hidden" 
         Foreground="DarkBlue" 
         IsReadOnly="{TemplateBinding IsReadOnly}"/> 
        <Popup 
         Name="Popup" 
         Placement="Bottom" 
         IsOpen="{TemplateBinding IsDropDownOpen}" 
         AllowsTransparency="True" 
         Focusable="False" 
         PopupAnimation="Slide"> 
         <Grid 
          Name="DropDown" 
          SnapsToDevicePixels="True"     
          MinWidth="{TemplateBinding ActualWidth}" 
          MaxHeight="{TemplateBinding MaxDropDownHeight}"> 
          <Border 
           x:Name="DropDownBorder" 
           Background="{DynamicResource TextBoxBrush}" 
           BorderThickness="1" 
           BorderBrush="{DynamicResource SolidBorderBrush}"/> 
          <ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True"> 
           <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" /> 
          </ScrollViewer> 
         </Grid> 
        </Popup> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="HasItems" Value="false"> 
         <Setter TargetName="DropDownBorder" Property="MinHeight" Value="95"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Foreground" Value="#373737"/> 
        </Trigger> 
        <Trigger Property="IsGrouping" Value="true"> 
         <Setter Property="ScrollViewer.CanContentScroll" Value="false"/> 
        </Trigger> 
        <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="true"> 
         <Setter TargetName="DropDownBorder" Property="CornerRadius" Value="0,0,4,4"/> 
         <Setter TargetName="DropDownBorder" Property="Margin" Value="0"/> 
        </Trigger> 
        <Trigger Property="IsEditable" 
      Value="true"> 
         <Setter Property="IsTabStop" Value="false"/> 
         <Setter TargetName="PART_EditableTextBox" Property="Visibility" Value="Visible"/> 
         <Setter TargetName="ContentSite" Property="Visibility" Value="Hidden"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
    </Style.Triggers> 
</Style> 

Если вы видите в этом коде есть ToggleButton. Это тот, который определяет вашу стрелу. Здесь у вас есть ToggleButton стиль:

<ControlTemplate x:Key="ComboBoxToggleButton" TargetType="ToggleButton"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition Width="20" /> 
     </Grid.ColumnDefinitions> 
     <Border 
      x:Name="Border" 
      Grid.ColumnSpan="2" 
      CornerRadius="5" 
      Background="{DynamicResource DarkGradient}" 
      BorderBrush="{DynamicResource SolidBorderBrush}" 
      BorderThickness="1" /> 
     <Border 
      Grid.Column="0" 
      CornerRadius="5,0,0,5" 
      Margin="1" 
      Background="{DynamicResource TextBoxBrush}" 
      BorderBrush="{DynamicResource SolidBorderBrush}" 
      BorderThickness="0,0,1,0" /> 
     <Path 
      x:Name="Arrow" 
      Grid.Column="1"  
      Fill="{DynamicResource TextBoxBrush}" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Data="M 0 0 L 4 4 L 8 0 Z"/> 
    </Grid> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter TargetName="Border" Property="BorderBrush" Value="Gray" /> 
      <Setter Property="Foreground" Value="DarkBlue"/> 
      <Setter TargetName="Arrow" Property="Fill" Value="DarkGray" /> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

Если вы удалите эту строку:

<Path 
     x:Name="Arrow" 
     Grid.Column="1"  
     Fill="{DynamicResource TextBoxBrush}" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     Data="M 0 0 L 4 4 L 8 0 Z"/> 

А также комментарий:

<Setter TargetName="Arrow" Property="Fill" Value="DarkGray" /> 

на ToggleButton вы стереть стрелку :)

ПРИМЕЧАНИЕ. Если вы хотите точно использовать этот код, вам нужно создать свои собственные цвета заливки.

Смежные вопросы