Wpf 组合框高亮显示
我试图自定义的组合框有问题。它位于UserControl中,我希望当鼠标在它上面时,它的BorderBrush属性从透明变为白色(淡入/淡出将是额外的) 但我似乎无法获得正确的触发器语法来执行此操作。。。现在我感到困惑,我可能错过了一些明显的东西 下面是有问题的组合框:Wpf 组合框高亮显示,wpf,templates,combobox,Wpf,Templates,Combobox,我试图自定义的组合框有问题。它位于UserControl中,我希望当鼠标在它上面时,它的BorderBrush属性从透明变为白色(淡入/淡出将是额外的) 但我似乎无法获得正确的触发器语法来执行此操作。。。现在我感到困惑,我可能错过了一些明显的东西 下面是有问题的组合框: <ComboBox x:Name="comboEmiCategories" ItemsSource="{Binding}" Background="Transparent" Height="15px" Width="30p
<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>
0
触发器不工作,更糟糕的是,如果我不注释掉整个ComboBox.Template部分,控件就会消失
主要目标是拥有一个组合框,可以堆叠图像,并允许用户从列表中选择一个,而只显示这些图像
谢谢
编辑:
Mario将其放在样式中的解决方案可行,但这是唯一的方法吗?尝试将下面的xaml放在窗口/用户控件的参考资料部分
<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 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>
0
还可以将样式declatarion放在您的用户控件中。我以前尝试过样式,但它还是尝试过您的样式。我把它放在App.xaml中,ComboBox抛出了一个错误:找不到资源“cbStyle”,所以我尝试将样式放在UserControl中,甚至放在保存ComboBox的网格中,同样的事情。似乎我缺少了一条关于UserControls的关键信息……好了,现在我删除了Style=“{StaticResource cbStyle}”,它使用了样式。。。即使我没有指定使用它,而且它是一个命名资源。我认为隐式风格应该是无名的