我的组合框有问题我正在尝试自定义。它位于UserControl中,我希望它的BorderBrush属性在鼠标悬停时从透明变为白色(淡入/淡出将是奖励)。
但我似乎无法获得正确的触发器语法...现在我感到困惑,我可能会遗漏一些明显的东西。
以下是有问题的组合框:
<ComboBox x:Name="comboEmiCategories" ItemsSource="{Binding}" Background="Transparent" Height="15px" Width="30px" BorderBrush="Transparent" Padding="-2">
<ComboBox.Resources>
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">0</sys:Double>
</ComboBox.Resources>
<ComboBox.ItemTemplate>
<DataTemplate>
<Image Source="{Binding}" Stretch="UniformToFill" Height="15px" Width="30px" Margin="0" />
</DataTemplate>
</ComboBox.ItemTemplate>
<ComboBox.Template>
<ControlTemplate>
<ControlTemplate.Triggers>
<Trigger Property="ComboBox.IsMouseOver" Value="True">
<Setter Property="ComboBox.BorderBrush" Value="White" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ComboBox.Template>
</ComboBox>
触发器不起作用,实际上更糟糕的是,如果我没有注释掉整个ComboBox.Template部分,控件就会消失。
主要目标是拥有一个堆叠图像的ComboBox,并允许用户从列表中选择一个,只显示那些图像。
感谢。
编辑: 马里奥把它放在一个风格中的解决方案是有效的,但它是唯一的方法吗?
答案 0 :(得分:0)
尝试将下面的xaml放在window / usercontrol的Resources部分中。
<Style x:Name="cbStyle" TargetType="ComboBox">
<Setter Property="BorderBrush" Value="Transparent" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
当然,您必须在ComboBox元素中引用此样式。还可以在ControlTemplate中剪切任何内容,这是无用的。
编辑:您的ComboBox部分应如下所示:
<ComboBox x:Name="comboEmiCategories" ItemsSource="{Binding}" Height="15px" Width="30px" Style="{StaticResource cbStyle}" Padding="-2">
<ComboBox.Resources>
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">0</sys:Double>
</ComboBox.Resources>
<ComboBox.ItemTemplate>
<DataTemplate>
<Image Source="{Binding}" Stretch="UniformToFill" Height="15px" Width="30px" Margin="0" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
还将Style declatarion放入UserControl。