我目前正在为我们的网站将要使用的程序设计一个小型应用程序,并且遇到了有关组合框的问题。我终于到达了它需要达到的基本阶段,但是我在设计文本样式时遇到了问题,以使文本集中对齐并为当前所选项目填充5个像素。我尝试将设置器添加到我认为正确的位置,尝试将其添加VerticalContentAlignment="Center"
到主XAML文件中,但没有任何改变。
我还想做的是,当这些选项滚动时,它们具有不同的背景色。我尝试将MouseOver视觉状态添加到ComboBoxItem,但无济于事。对于冗长的代码(可能很凌乱),我们事先表示歉意。这是一项在旅途中的学习,其中大部分来自MSDN,然后根据需要进行编辑。非常感谢。
这是因为参数HorizontalContentAlignment
并VerticalContentAlignment
没有ContentPresenter
正确地传递到ControlTemplate中:
<ContentPresenter x:Name="ContentSite"
...
VerticalAlignment="Stretch"
HorizontalAlignment="Left">
</ContentPresenter>
在这种情况下,参数是“缝制的”,应如下所示:
<ContentPresenter x:Name="ContentSite"
...
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
</ContentPresenter>
对于必要的动态背景元素,请在<ControlTemplate.Triggers>
部分中添加一个触发器,然后在其中添加通用网格的名称ComboBox
:
<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>
琐事还添加了一些详细信息,可以下载该项目的完整版本here
。
Output
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句