2013-03-18 24 views
1

所以我試圖使用默認的組合框來顯示選擇列表。當組合框被選擇爲透明時,我想要彈出的上下文菜單的背景。我找不到這樣做的財產或風格,而且我在這方面沒有找到太多的東西。提前致謝!WinRT中的透明組合框

回答

4

你需要提取的ComboBox與Visual Studio設計視圖當前模板的副本或混合和修改名爲「PopupBorder的」 BorderBackground財產說Transparent。默認情況下它使用{StaticResource ComboBoxPopupBackgroundThemeBrush}

這是更新的Style資源的副本。

<Style 
    x:Key="ComboBoxStyle1" 
    TargetType="ComboBox"> 
    <Setter 
     Property="Padding" 
     Value="8,0" /> 
    <Setter 
     Property="Foreground" 
     Value="{StaticResource ComboBoxForegroundThemeBrush}" /> 
    <Setter 
     Property="Background" 
     Value="{StaticResource ComboBoxBackgroundThemeBrush}" /> 
    <Setter 
     Property="BorderBrush" 
     Value="{StaticResource ComboBoxBorderThemeBrush}" /> 
    <Setter 
     Property="BorderThickness" 
     Value="{StaticResource ComboBoxBorderThemeThickness}" /> 
    <Setter 
     Property="TabNavigation" 
     Value="Once" /> 
    <Setter 
     Property="ScrollViewer.HorizontalScrollBarVisibility" 
     Value="Disabled" /> 
    <Setter 
     Property="ScrollViewer.VerticalScrollBarVisibility" 
     Value="Auto" /> 
    <Setter 
     Property="ScrollViewer.HorizontalScrollMode" 
     Value="Disabled" /> 
    <Setter 
     Property="ScrollViewer.VerticalScrollMode" 
     Value="Auto" /> 
    <Setter 
     Property="ScrollViewer.IsVerticalRailEnabled" 
     Value="True" /> 
    <Setter 
     Property="ScrollViewer.IsDeferredScrollingEnabled" 
     Value="False" /> 
    <Setter 
     Property="ScrollViewer.BringIntoViewOnFocusChange" 
     Value="True" /> 
    <Setter 
     Property="HorizontalContentAlignment" 
     Value="Stretch" /> 
    <Setter 
     Property="FontFamily" 
     Value="{StaticResource ContentControlThemeFontFamily}" /> 
    <Setter 
     Property="FontSize" 
     Value="{StaticResource ControlContentThemeFontSize}" /> 
    <Setter 
     Property="ItemsPanel"> 
     <Setter.Value> 
      <ItemsPanelTemplate> 
       <CarouselPanel /> 
      </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter 
     Property="Template"> 
     <Setter.Value> 
      <ControlTemplate 
       TargetType="ComboBox"> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition 
          Width="*" /> 
         <ColumnDefinition 
          Width="32" /> 
        </Grid.ColumnDefinitions> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup 
          x:Name="CommonStates"> 
          <VisualState 
           x:Name="Normal" /> 
          <VisualState 
           x:Name="PointerOver"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Background" 
             Storyboard.TargetName="Background"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxPointerOverBackgroundThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="BorderBrush" 
             Storyboard.TargetName="Background"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxPointerOverBorderThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Fill" 
             Storyboard.TargetName="Highlight"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxSelectedPointerOverBackgroundThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState 
           x:Name="Pressed"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Background" 
             Storyboard.TargetName="Background"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxPressedBackgroundThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="BorderBrush" 
             Storyboard.TargetName="Background"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxPressedBorderThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Foreground" 
             Storyboard.TargetName="ContentPresenter"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxPressedForegroundThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <DoubleAnimation 
             Duration="0" 
             To="1" 
             Storyboard.TargetProperty="Opacity" 
             Storyboard.TargetName="PressedBackground" /> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Foreground" 
             Storyboard.TargetName="DropDownGlyph"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxArrowPressedForegroundThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState 
           x:Name="Disabled"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Background" 
             Storyboard.TargetName="Background"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxDisabledBackgroundThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="BorderBrush" 
             Storyboard.TargetName="Background"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxDisabledBorderThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Foreground" 
             Storyboard.TargetName="ContentPresenter"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxDisabledForegroundThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Foreground" 
             Storyboard.TargetName="DropDownGlyph"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxArrowDisabledForegroundThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
         <VisualStateGroup 
          x:Name="FocusStates"> 
          <VisualState 
           x:Name="Focused"> 
           <Storyboard> 
            <DoubleAnimation 
             Duration="0" 
             To="1" 
             Storyboard.TargetProperty="Opacity" 
             Storyboard.TargetName="HighlightBackground" /> 
            <DoubleAnimation 
             Duration="0" 
             To="1" 
             Storyboard.TargetProperty="Opacity" 
             Storyboard.TargetName="Highlight" /> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Foreground" 
             Storyboard.TargetName="ContentPresenter"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxFocusedForegroundThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState 
           x:Name="FocusedPressed"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Foreground" 
             Storyboard.TargetName="ContentPresenter"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxPressedForegroundThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="Fill" 
             Storyboard.TargetName="Highlight"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0" 
              Value="{StaticResource ComboBoxPressedHighlightThemeBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState 
           x:Name="Unfocused" /> 
          <VisualState 
           x:Name="PointerFocused" /> 
          <VisualState 
           x:Name="FocusedDropDown"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames 
             Duration="0" 
             Storyboard.TargetProperty="Visibility" 
             Storyboard.TargetName="PopupBorder"> 
             <DiscreteObjectKeyFrame 
              KeyTime="0"> 
              <DiscreteObjectKeyFrame.Value> 
               <Visibility>Visible</Visibility> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
         <VisualStateGroup 
          x:Name="DropDownStates"> 
          <VisualState 
           x:Name="Opened"> 
           <Storyboard> 
            <SplitOpenThemeAnimation 
             ClosedTargetName="ContentPresenter" 
             ContentTranslationOffset="0" 
             ContentTargetName="ScrollViewer" 
             ClosedLength="{Binding TemplateSettings.DropDownClosedHeight, RelativeSource={RelativeSource Mode=TemplatedParent}}" 
             OffsetFromCenter="{Binding TemplateSettings.DropDownOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" 
             OpenedTargetName="PopupBorder" 
             OpenedLength="{Binding TemplateSettings.DropDownOpenedHeight, RelativeSource={RelativeSource Mode=TemplatedParent}}" /> 
           </Storyboard> 
          </VisualState> 
          <VisualState 
           x:Name="Closed"> 
           <Storyboard> 
            <SplitCloseThemeAnimation 
             ClosedTargetName="ContentPresenter" 
             ContentTranslationOffset="40" 
             ContentTranslationDirection="{Binding TemplateSettings.SelectedItemDirection, RelativeSource={RelativeSource Mode=TemplatedParent}}" 
             ContentTargetName="ScrollViewer" 
             ClosedLength="{Binding TemplateSettings.DropDownClosedHeight, RelativeSource={RelativeSource Mode=TemplatedParent}}" 
             OffsetFromCenter="{Binding TemplateSettings.DropDownOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" 
             OpenedTargetName="PopupBorder" 
             OpenedLength="{Binding TemplateSettings.DropDownOpenedHeight, RelativeSource={RelativeSource Mode=TemplatedParent}}" /> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <Border 
         x:Name="Background" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         Background="{TemplateBinding Background}" 
         Grid.ColumnSpan="2" /> 
        <Rectangle 
         x:Name="PressedBackground" 
         Fill="{StaticResource ComboBoxPressedHighlightThemeBrush}" 
         Margin="{TemplateBinding BorderThickness}" 
         Opacity="0" /> 
        <Border 
         x:Name="HighlightBackground" 
         BorderBrush="{StaticResource ComboBoxFocusedBorderThemeBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         Background="{StaticResource ComboBoxFocusedBackgroundThemeBrush}" 
         Grid.ColumnSpan="2" 
         Opacity="0" /> 
        <Rectangle 
         x:Name="Highlight" 
         Fill="{StaticResource ComboBoxSelectedBackgroundThemeBrush}" 
         Margin="{TemplateBinding BorderThickness}" 
         Opacity="0" /> 
        <ContentPresenter 
         x:Name="ContentPresenter" 
         HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
         Margin="{TemplateBinding Padding}" 
         VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> 
        <TextBlock 
         x:Name="DropDownGlyph" 
         Grid.Column="1" 
         Foreground="{StaticResource ComboBoxArrowForegroundThemeBrush}" 
         FontWeight="Bold" 
         FontSize="{StaticResource ComboBoxArrowThemeFontSize}" 
         FontFamily="{StaticResource SymbolThemeFontFamily}" 
         HorizontalAlignment="Right" 
         IsHitTestVisible="False" 
         Margin="0,0,6,4" 
         Text="&#xE011;" 
         VerticalAlignment="Center" /> 
        <Popup 
         x:Name="Popup"> 
         <Border 
          x:Name="PopupBorder" 
          BorderBrush="{StaticResource ComboBoxPopupBorderThemeBrush}" 
          BorderThickness="{StaticResource ComboBoxPopupBorderThemeThickness}" 
          Background="Transparent" 
          HorizontalAlignment="Stretch"> 
          <ScrollViewer 
           x:Name="ScrollViewer" 
           BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}" 
           Foreground="{StaticResource ComboBoxPopupForegroundThemeBrush}" 
           HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" 
           HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" 
           IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" 
           IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" 
           IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" 
           VerticalSnapPointsType="OptionalSingle" 
           VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" 
           VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" 
           VerticalSnapPointsAlignment="Near" 
           ZoomMode="Disabled"> 
           <ItemsPresenter /> 
          </ScrollViewer> 
         </Border> 
        </Popup> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
0

您是否嘗試過以下方法?

  <ComboBox.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Background="Transparent" /> 
       </ItemsPanelTemplate> 
      </ComboBox.ItemsPanel> 

這適用於我(無需重新定義ControlTemplate)。