组合框的边框颜色不变 - 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 10
和 Windows 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>
边框不变。
我没有应用 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 10
和 Windows 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="{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>