Show/Hide WPF RichTextBox 代码隐藏中的左右边框?

Show/Hide Left and Right Border in WPF RichTextBox codebehind?

我想 hide/show 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");

但它不起作用。

问候 阿俊

你可以用这样的代码做同样的事情:

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

那么如果所有边框都需要有相同的粗细,你可以只使用一个数字:

myRichTextBox.BorderThickness = new Thickness(3);

编辑:

既然你使用的是style,那么你可以定义多个style,然后在它们之间切换:

<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;