C# 组合框-对齐并填充选定项目的文本,并为组合框项目创建鼠标滚动
我目前正在为我们网站将要使用的一个程序设计一个小应用程序,遇到了一个又一个关于组合框的问题。我终于让它达到了它需要达到的基本阶段,但我面临的问题是如何设置文本的样式,使其中心对齐,并为当前选定的项目填充5个像素。我曾尝试将setter添加到我认为正确的位置,我曾尝试将C# 组合框-对齐并填充选定项目的文本,并为组合框项目创建鼠标滚动,c#,wpf,combobox,C#,Wpf,Combobox,我目前正在为我们网站将要使用的一个程序设计一个小应用程序,遇到了一个又一个关于组合框的问题。我终于让它达到了它需要达到的基本阶段,但我面临的问题是如何设置文本的样式,使其中心对齐,并为当前选定的项目填充5个像素。我曾尝试将setter添加到我认为正确的位置,我曾尝试将VerticalContentAlignment=“Center”添加到主XAML文件,但没有任何改变 我还想做的是,当选项滚动时,它们有不同的背景颜色。我曾尝试将鼠标悬停视觉状态添加到ComboBoxItem,但没有效果。为冗长
VerticalContentAlignment=“Center”
添加到主XAML文件,但没有任何改变
我还想做的是,当选项滚动时,它们有不同的背景颜色。我曾尝试将鼠标悬停视觉状态添加到ComboBoxItem,但没有效果。为冗长的代码(可能很混乱)提前道歉。这是一项边走边学的工作,大部分内容来自MSDN,然后根据需要进行编辑。非常感谢
代码:这是因为参数
HorizontalContentAlignment
和VerticalContentAlignment
未正确传输到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>