摆脱WPF中的按钮红色边框?

时间:2014-04-18 18:22:59

标签: wpf button togglebutton

我正在问一个类似的问题。在我的特定情况下,答案似乎不起作用。我已经包含了详细信息。

我有一个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>

1 个答案:

答案 0 :(得分:1)

抱歉,但我想你不明白发生了什么。让我重新开始吧。

你看到的很可能是WPF在某些地方执行错误检查的结果。当验证步骤&#39;在绑定操作期间失败(即您已在绑定到KAJSHDKAS变量的文本框中输入double),WPF设置&#34;验证错误&#34;控制标志。默认情况下,它会通过该字段周围的简单红色轮廓显示。

这意味着代码中失败。这很严重。你必须检查究竟发生了什么并重新发现错误。

通常,它是某些转换器或某些绑定引发异常的结果。检查调试器的输出面板,看看是否有任何&#34;第一次机会异常&#34;报道。或者甚至是一些堆栈跟踪。如果你看到其中任何一个发生在&#34;红色轮廓&#34;显示,您必须简单地解决问题,以便不会引发异常,并且红色轮廓将消失。

如果您没有修复它,如果您只是隐藏错误通知,那么在稍后的某个时间点您可能会发现某些绑定不再起作用,或者某些样式未应用,或者某些UI元素未正确绘制(即它们被大红色X错误标记替换)。

如果输出日志中没有可见的异常,则查找有关失败绑定的任何消息。当绑定无法将某些值转换为某个属性或反之亦然时,它也可能导致设置错误标志。它通常不会以异常飞行结束,但会在日志中写入一条简单的消息,它将准确地解释哪个控件失败的绑定。在这种情况下,您需要跟踪哪些不可转换为绑定属性的违规值,您需要修复代码以确保只提供可转换值。