我正在问一个类似的问题。在我的特定情况下,答案似乎不起作用。我已经包含了详细信息。
我有一个ComboBox,在ComboBox中每个项目都有一个ToggleButton。当我点击ToggleButton时,我想要摆脱一个红色轮廓。如何删除按钮周围的红色轮廓?在ControlTemplate中我设置BorderThickness =“0”,BorderBrush =“Transparent”,Focusable =“false”。这些都是其他帖子提到的所有内容。
<!--Xaml for ComboBox: -->
<TimestampComboBox
Style="{DynamicResource PlotComboBoxStyle}"
IsSynchronizedWithCurrentItem="True"
…
>
<TimestampComboBox.ItemsSource >…
</TimestampComboBox.ItemsSource>
<TimestampComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<DockPanel Width="174" LastChildFill="False">
<ToggleButton DockPanel.Dock=
Style="{DynamicResource SampleAddToggleButtonStyle}"
>
<ToggleButton.Content>
<Rectangle Height="10" Width="10"/>
</ToggleButton.Content>
</ToggleButton>
</DockPanel>
</StackPanel>
</DataTemplate>
</TimestampComboBox.ItemTemplate>
</TimestampComboBox>
<!--SampleAddToggleButtonStyle: -->
<Style x:Key="SampleAddToggleButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border Name="border" BorderThickness="0" BorderBrush="Transparent">
<ContentPresenter Content="{TemplateBinding Content}" />
</Border>
<ControlTemplate.Triggers>
…
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:1)
抱歉,但我想你不明白发生了什么。让我重新开始吧。
你看到的很可能是WPF在某些地方执行错误检查的结果。当验证步骤&#39;在绑定操作期间失败(即您已在绑定到KAJSHDKAS
变量的文本框中输入double
),WPF设置&#34;验证错误&#34;控制标志。默认情况下,它会通过该字段周围的简单红色轮廓显示。
这意味着代码中失败。这很严重。你必须检查究竟发生了什么并重新发现错误。
通常,它是某些转换器或某些绑定引发异常的结果。检查调试器的输出面板,看看是否有任何&#34;第一次机会异常&#34;报道。或者甚至是一些堆栈跟踪。如果你看到其中任何一个发生在&#34;红色轮廓&#34;显示,您必须简单地解决问题,以便不会引发异常,并且红色轮廓将消失。
如果您没有修复它,如果您只是隐藏错误通知,那么在稍后的某个时间点您可能会发现某些绑定不再起作用,或者某些样式未应用,或者某些UI元素未正确绘制(即它们被大红色X错误标记替换)。
如果输出日志中没有可见的异常,则查找有关失败绑定的任何消息。当绑定无法将某些值转换为某个属性或反之亦然时,它也可能导致设置错误标志。它通常不会以异常飞行结束,但会在日志中写入一条简单的消息,它将准确地解释哪个控件失败的绑定。在这种情况下,您需要跟踪哪些不可转换为绑定属性的违规值,您需要修复代码以确保只提供可转换值。