RichTextBox FocusVisualStyle无法正常工作

时间:2014-01-19 13:01:40

标签: c# wpf xaml

我有一个包含一些内容的RichTextBox。我想隐藏滚动条并在用户将鼠标移到其上时删除边框。 我添加了FocusVisualStyle =“{x:Null}”,我在此链接中读到:Remove focus rectangle on a UserControl

见下文:

 <RichTextBox HorizontalAlignment="Left" Height="105" Margin="48,42,0,0" VerticalAlignment="Top" Width="614" Background="Transparent" IsReadOnly="True" ScrollViewer.VerticalScrollBarVisibility="Hidden"  BorderBrush="Transparent" ScrollViewer.CanContentScroll="False"  FocusVisualStyle="{x:Null}">
      </FlowDocument>
         blah blah 
      </FlowDocument>
 </RichTextBox>

但是当用户将鼠标移到它上面时,我仍然会看到一个白色边框,我可以上下滚动。

为什么这???

1 个答案:

答案 0 :(得分:0)

您所看到的FocusVisual不是MouseOver effect,而是默认为RichTextBox应用的<Style TargetType="RichTextBox"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TextBoxBase"> <Border BorderThickness="{TemplateBinding Border.BorderThickness}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}" Name="border" SnapsToDevicePixels="True"> <ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" Name="PART_ContentHost" Focusable="False" /> </Border> <ControlTemplate.Triggers> <Trigger Property="UIElement.IsEnabled" Value="False"> <Setter Property="UIElement.Opacity" TargetName="border" Value="0.56"/> </Trigger> <!--<Trigger Property="UIElement.IsMouseOver" Value="True"> <Setter Property="Border.BorderBrush" TargetName="border"> <Setter.Value> <SolidColorBrush>#FF7EB4EA</SolidColorBrush> </Setter.Value> </Setter> </Trigger>--> <Trigger Property="UIElement.IsKeyboardFocused" Value="True"> <Setter Property="Border.BorderBrush" TargetName="border"> <Setter.Value> <SolidColorBrush>#FF569DE5</SolidColorBrush> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>

您需要覆盖默认模板以删除通过触发器应用的效果,如果UIElement.IsMouseOver值为true )。

创建一个样式并提供您自己的模板(如果您希望它应用于您应用中的所有RichTextBox,请将其放在应用资源或窗口资​​源中,无论它适合您的代码。否则,您可以将其内联声明为您的的RichTextbox):

{{1}}

请注意我在上述默认模板中注释的触发器。