组合框的边框颜色不变 - Windows 8

Border color of combox does not change - Windows 8

边框不变。 我没有应用 global/local 样式,只有一个用于 fontSize。
App.xaml 是空的..那里没有样式。

如果还向普通 window 添加了组合框并设置了边框颜色, 也没有运气???

那么哪里可以改写呢?

组合框位于 window 根目录中,它没有像 Grid、StackPanel 等容器。

window:

<Window x:Name="XyzWindow" x:Class="Xyz.Final" Title="MyTitle"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        xmlns:wc="clr-namespace:System.Windows.Controls;assembly=PresentationFramework"
        xmlns:local="clr-namespace:Hasng"
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
        d:DataContext="{d:DesignInstance local:MainWindowViewModel,IsDesignTimeCreatable=True}" 
        mc:Ignorable="d" Height="350" Width="650" ResizeMode="NoResize" AutomationProperties.Name="wHashScreen" 
        Icon="/xyz;component/IMG/thumbprint.png" FontWeight="Bold" UseLayoutRounding="False" WindowStartupLocation="CenterScreen" WindowStyle="ThreeDBorderWindow">

我在 Windows 8 上加载我的应用程序时遇到了类似的问题,它曾经在 Windows 10Windows 7 上运行良好。

这是我为此类需要在 Win8 上 运行 的应用程序所做的解决方法。我在控件周围添加了一个边框,并且它曾经在 Windows8 中毫无问题地显示它。我希望这对你的情况也有帮助。

<Border Name="ComboBoxBorder" BorderThickness="1.5" BorderBrush="Red">
    <ComboBox Name="ComBoxName"  Width="80" Height="45">
        <ComboBoxItem>A</ComboBoxItem>
        <ComboBoxItem>B</ComboBoxItem>
    </ComboBox>
</Border>

要启用 ComboBox 的 BorderBrush 属性,您需要 edit the Template 并更改 ToggleButton ControlTemplate 中的绑定

BorderBrush="{StaticResource ComboBox.Static.Border}"

BorderBrush="{TemplateBinding BorderBrush}"

我认为只有 Windows 8

需要此解决方法

另外两个Funk的回答:

1.) 在 Ui 上放置一个组合框 --> 右键--> 编辑模板-> 编辑副本
--> 选择应用程序 --> 确定(ComboBoxStyleNew)

2.) [从 Funk 的回答中复制:]

更改

的 BorderBrush 属性
BorderBrush="{StaticResource ComboBox.Static.Border}"

到(这使得边框笔刷 属性 可覆盖)

BorderBrush="{TemplateBinding BorderBrush}"

此处摘录一小段:

 <Style x:Key="ComboBoxToggleButton" TargetType="{x:Type ToggleButton}">
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="IsTabStop" Value="false"/>
            <Setter Property="Focusable" Value="false"/>
            <Setter Property="ClickMode" Value="Press"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        <Border x:Name="templateRoot" BorderBrush="{TemplateBinding BorderBrush}"

在我的示例中,我使用 MultiDataTriggers 来动态更改组合框的边框颜色。 ComboBoxStyleNew 是我们在步骤 1 中创建的控件模板资源的 name/key。 ComboBoxTemplate 是组合框模板的键。

<ComboBox x:Name="comboBox" Template="{DynamicResource ComboBoxTemplate}">
<ComboBox.Style>
    <Style TargetType="ComboBox" BasedOn="{StaticResource ComboBoxStyleNew}">
        <Style.Triggers>
            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition 
                        Binding="{Binding Tag, ElementName=Button1MouseDetector}" 
                        Value="MouseOver" 
                        />
                    <Condition 
                        Binding="{Binding IsEnabled, ElementName=button1}" 
                        Value="False" 
                        />
                </MultiDataTrigger.Conditions>
                <Setter Property="BorderBrush" Value="Red" />
            </MultiDataTrigger>                     
        </Style.Triggers>
    </Style>
</ComboBox.Style>
</ComboBox>