在 WPF 富文本框代码隐藏中显示/隐藏左边框和右边框

本文关键字:边框 隐藏 左边 WPF 右边 显示 文本 代码 | 更新日期: 2023-09-27 18:33:05

我想隐藏/显示WPF RichTextBox有时在代码后面,有时也隐藏/显示右边框。

这能实现吗?

我已经像这样在 XAML 中尝试过borderthickness ="3,3,0,3". 它隐藏了我的右侧,现在我需要显示右侧边框并隐藏我的右侧边框。

我该怎么做?

更新:

<Window x:Class="View.SingleLineTextMode"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="SingleLineTextMode" Height="300" Width="300" WindowState="Maximized" WindowStyle="None" WindowStartupLocation="CenterScreen" Background="Black">
    <Window.Resources>
        <Style x:Key="MyStyle" BasedOn="{x:Null}" TargetType="{x:Type RichTextBox}">
            <Setter Property="BorderThickness" Value="3"/>
            <Setter Property="Padding" Value="0,5,0,0"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RichTextBox}">
                        <Border x:Name="bg" BorderBrush="Yellow" BorderThickness="3,3,0,3" Background="{TemplateBinding Background}">
                            <ScrollViewer x:Name="PART_ContentHost"  IsDeferredScrollingEnabled="True" CanContentScroll="False" />
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="BorderBrush" TargetName="bg" Value="Yellow"/>
                                <Setter Property="BorderThickness" TargetName="bg" Value="3,3,0,3"/>
                            </Trigger>
                            <Trigger Property="IsFocused" Value="True">
                                <Setter Property="BorderBrush" TargetName="bg" Value="Yellow"/>
                                <Setter Property="BorderThickness" TargetName="bg" Value="3,3,0,3"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <Grid>
        <!--<RichTextBox Name="txtAppendValue" Height="60" Width="1920" Style="{StaticResource MyStyle}" Margin="0,0,-10,0" FontSize="60" FontFamily="Arial"  IsReadOnly="True" Focusable="False" Cursor="Arrow" BorderThickness="3,3,3,3" IsUndoEnabled="False" UndoLimit="0" TextOptions.TextFormattingMode="Display" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling" VirtualizingPanel.CacheLength="2,3" VirtualizingPanel.CacheLengthUnit="Page" TextBlock.LineHeight="100" Padding="0">
        </RichTextBox>-->
        <RichTextBox Name="txtAppendValue" HorizontalAlignment="Center" VerticalAlignment="Center" Height="60" Width="1920" Style="{StaticResource MyStyle}" Margin="0,0,0,0"  FontSize="40" FontFamily="Arial"  IsReadOnly="True" Focusable="False" Cursor="Arrow"  IsUndoEnabled="False" UndoLimit="0" TextOptions.TextFormattingMode="Display" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling" VirtualizingPanel.CacheLength="2,3" VirtualizingPanel.CacheLengthUnit="Page" TextBlock.LineHeight="100" >
        </RichTextBox>
        <Label Name="lblStatusUpdate" ></Label>
    </Grid>
</Window>

上面的一个是我的 XAML。

txtAppendValue.BorderThickness=new Thickness("0,3,0,3");

但它不起作用。

问候阿金

在 WPF 富文本框代码隐藏中显示/隐藏左边框和右边框

你可以从代码中做同样的事情,如下所示:

myRichTextBox.BorderThickness = new Thickness(3,3,0,3);

然后,如果所有边框都需要具有相同的粗细,则只能使用一个数字:

myRichTextBox.BorderThickness = new Thickness(3);

编辑:

由于您使用的是样式,因此可以定义多个样式,然后在它们之间切换:

<Style x:Key="MyStyleNoBorders" BasedOn="{x:Null}" TargetType="{x:Type RichTextBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type RichTextBox}">
                <Border x:Name="bg" BorderBrush="Yellow" BorderThickness="0,3,0,3" Background="{TemplateBinding Background}">
                    <ScrollViewer x:Name="PART_ContentHost"  IsDeferredScrollingEnabled="True" CanContentScroll="False" />
                </Border>                       
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style x:Key="MyStyleBothBorders" BasedOn="{x:Null}" TargetType="{x:Type RichTextBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type RichTextBox}">
                <Border x:Name="bg" BorderBrush="Yellow" BorderThickness="3" Background="{TemplateBinding Background}">
                    <ScrollViewer x:Name="PART_ContentHost"  IsDeferredScrollingEnabled="True" CanContentScroll="False" />
                </Border>                       
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

确保您的RichTextBox不要太宽以适合屏幕,否则您将无法看到边框。然后在代码中,只需使用调用来更改样式:

txtAppendValue.Style = FindResource("MyStyleNoBorders") as Style;

txtAppendValue.Style = FindResource("MyStyleBothBorders") as Style;