C# 组合框-对齐并填充选定项目的文本,并为组合框项目创建鼠标滚动

C# 组合框-对齐并填充选定项目的文本,并为组合框项目创建鼠标滚动,c#,wpf,combobox,C#,Wpf,Combobox,我目前正在为我们网站将要使用的一个程序设计一个小应用程序,遇到了一个又一个关于组合框的问题。我终于让它达到了它需要达到的基本阶段,但我面临的问题是如何设置文本的样式,使其中心对齐,并为当前选定的项目填充5个像素。我曾尝试将setter添加到我认为正确的位置,我曾尝试将VerticalContentAlignment=“Center”添加到主XAML文件,但没有任何改变 我还想做的是,当选项滚动时,它们有不同的背景颜色。我曾尝试将鼠标悬停视觉状态添加到ComboBoxItem,但没有效果。为冗长

我目前正在为我们网站将要使用的一个程序设计一个小应用程序,遇到了一个又一个关于组合框的问题。我终于让它达到了它需要达到的基本阶段,但我面临的问题是如何设置文本的样式,使其中心对齐,并为当前选定的项目填充5个像素。我曾尝试将setter添加到我认为正确的位置,我曾尝试将
VerticalContentAlignment=“Center”
添加到主XAML文件,但没有任何改变

我还想做的是,当选项滚动时,它们有不同的背景颜色。我曾尝试将鼠标悬停视觉状态添加到ComboBoxItem,但没有效果。为冗长的代码(可能很混乱)提前道歉。这是一项边走边学的工作,大部分内容来自MSDN,然后根据需要进行编辑。非常感谢


代码:

这是因为参数HorizontalContentAlignmentVerticalContentAlignment未正确传输到ContentPresenter中的控制模板:

<ContentPresenter x:Name="ContentSite"
                  ...
                  VerticalAlignment="Stretch"
                  HorizontalAlignment="Left">
</ContentPresenter> 
使用的示例:

<Window ...
        xmlns:sys="clr-namespace:System;assembly=mscorlib">

<Window.Resources>
    <x:Array x:Key="TestArray" Type="{x:Type sys:String}">
        <sys:String>BATTLEFIELD4</sys:String>
        <sys:String>CALLOFDUTY4</sys:String>
        <sys:String>CS</sys:String>
    </x:Array>
</Window.Resources>

<Grid>
    <ComboBox SelectedIndex="0"
              Foreground="White"
              Background="Blue"
              Height="60"
              HorizontalContentAlignment="Center"
              VerticalContentAlignment="Center" 
              ItemsSource="{StaticResource TestArray}" />           
</Grid>

战场4
使命召唤4
反恐精英
此外,琐事增加了一些细节,项目的完整版本可以下载

输出


感谢您的回答,现在项目显示为垂直居中!
<ControlTemplate.Triggers>
    ...
    <Trigger Property="SelectedValue" Value="BATTLEFIELD4">
        <Setter TargetName="MainGrid" Property="Background" Value="Green" />
    </Trigger>

    <Trigger Property="SelectedValue" Value="CALLOFDUTY4">
        <Setter TargetName="MainGrid" Property="Background" Value="Blue" />
    </Trigger>

    <Trigger Property="SelectedValue" Value="CS">
        <Setter TargetName="MainGrid" Property="Background" Value="Red" />
    </Trigger>
</ControlTemplate.Triggers>
<Window ...
        xmlns:sys="clr-namespace:System;assembly=mscorlib">

<Window.Resources>
    <x:Array x:Key="TestArray" Type="{x:Type sys:String}">
        <sys:String>BATTLEFIELD4</sys:String>
        <sys:String>CALLOFDUTY4</sys:String>
        <sys:String>CS</sys:String>
    </x:Array>
</Window.Resources>

<Grid>
    <ComboBox SelectedIndex="0"
              Foreground="White"
              Background="Blue"
              Height="60"
              HorizontalContentAlignment="Center"
              VerticalContentAlignment="Center" 
              ItemsSource="{StaticResource TestArray}" />           
</Grid>