提问人:wpf 提问时间:11/9/2023 更新时间:11/9/2023 访问量:40
AppContext.SetSwitch(“Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering”, false);不适用于 RichTextBox?
AppContext.SetSwitch("Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering", false); not work for RichTextBox?
问:
当我设置 AppContext.SetSwitch(“Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering”, false);TextBox 行为正常,RichTextBox 无法显示文本。造成这种结果的原因是什么?
XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Content="TextBox" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="25"></Label>
<TextBox Height="80" Width="500" Grid.Column="1" SelectionOpacity="1"></TextBox>
<Label Content="RichTextBox" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="25"></Label>
<RichTextBox Height="80" Width="500" Grid.Row="1" Grid.Column="1" SelectionOpacity="1" Style="{StaticResource RichTextBoxStyle}"></RichTextBox>
</Grid>
.净6:
代号:
public MainWindow()
{
AppContext.SetSwitch("Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering", false);
InitializeComponent();
}
.NET 框架 4.8
App.config:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering=false"/>
</runtime>
是否可以在不更改 xaml 代码的情况下使 RichTextBox 的结果与 TextBox 的结果相同?
答:
0赞
mm8
11/9/2023
#1
造成这种结果的原因是什么?
该开关仅适用于文档中所述的事实。TextBox
PasswordBox
是否可以在不更改 xaml 代码的情况下使 RichTextBox 的结果与 TextBox 的结果相同?
至少不使用这个或任何其他开关。如果不想接触 XAML 标记,请以编程方式设置?如果可以在代码隐藏中调用该方法,则还可以设置控件的属性。SelectionOpacity
AppContext.SetSwitch
评论
0赞
wpf
11/13/2023
嗨,@mm8。我首先想验证是否确实没有办法实现这一点,同时仍然保持 SelectionOpacity=“1” 并在 RichTextBox 中有一个可见的文本?根据您的回答,我知道我不能使用 UseAdornerForTextboxSelectionRendering 开关或任何其他开关来实现这一点。是否有其他方法可以实现 RichTextBox 的此行为?也许,可以使用我自己的派生类扩展 RichTextBox,并覆盖某些方法或默认行为?如果这确实不受支持,我将不得不按照您的建议妥协并降低不透明度。
0赞
mm8
11/15/2023
我不认为有一种简单的方法可以在派生类中“覆盖”这种行为。以编程方式降低不透明度是解决问题的最简单方法。
评论