【问题标题】:RichTextBox FocusVisualStyle not workingRichTextBox FocusVisualStyle 不起作用
【发布时间】:2014-01-19 13:01:40
【问题描述】:

我有一个包含一些内容的 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>

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

这是为什么呢??

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    您看到的不是FocusVisual,而是默认情况下应用于RichTextBox 的MouseOver effect

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

    创建一个样式并提供您自己的模板(如果您希望将其应用于应用程序中的所有 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>
    

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

    【讨论】:

      猜你喜欢
      • 2012-05-17
      • 2020-10-14
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      相关资源
      最近更新 更多