Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 组合框高亮显示_Wpf_Templates_Combobox - Fatal编程技术网

Wpf 组合框高亮显示

Wpf 组合框高亮显示,wpf,templates,combobox,Wpf,Templates,Combobox,我试图自定义的组合框有问题。它位于UserControl中,我希望当鼠标在它上面时,它的BorderBrush属性从透明变为白色(淡入/淡出将是额外的) 但我似乎无法获得正确的触发器语法来执行此操作。。。现在我感到困惑,我可能错过了一些明显的东西 下面是有问题的组合框: <ComboBox x:Name="comboEmiCategories" ItemsSource="{Binding}" Background="Transparent" Height="15px" Width="30p

我试图自定义的组合框有问题。它位于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>

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}”,它使用了样式。。。即使我没有指定使用它,而且它是一个命名资源。我认为隐式风格应该是无名的