Windows Presentation Foundation
.NET Framework 的一部分,它提供统一的编程模型,用于在 Windows 上构建业务线桌面应用程序。
127 个问题
大家好,我的WPF应用程序中有一个小错误,这让我很烦恼。我正在我的 richtextbox 中更改文本的字体大小,奇怪的是,有时它有效,有时无效,
这很奇怪,我在想有人会知道为什么?
这是控制该代码的部分
private void NoteContent_SelectionChanged(object sender, RoutedEventArgs e) {
var selectionFontWeight = NoteContent.Selection.GetPropertyValue(TextElement.FontWeightProperty);
boldBton.IsChecked = (selectionFontWeight != DependencyProperty.UnsetValue)
&& selectionFontWeight.Equals(FontWeights.Bold);
var selectionFontStyle = NoteContent.Selection.GetPropertyValue(TextElement.FontStyleProperty);
italicBton.IsChecked = (selectionFontStyle != DependencyProperty.UnsetValue)
&& selectionFontStyle.Equals(FontStyles.Italic);
var selectionFontDecoration = NoteContent.Selection.GetPropertyValue(Inline.TextDecorationsProperty);
UndelineBton.IsChecked = (selectionFontDecoration != DependencyProperty.UnsetValue)
&& selectionFontDecoration.Equals(TextDecorations.Underline);
FontsComboBox.SelectedItem = NoteContent.Selection.GetPropertyValue(FontFamilyProperty);
SizeConboBox.Text = (NoteContent.Selection.GetPropertyValue(FontSizeProperty)).ToString();
}
private void FontsComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) {
if (FontsComboBox.SelectedItem != null) {
NoteContent.Selection.ApplyPropertyValue(FontFamilyProperty, FontsComboBox.SelectedItem);
}
}
private void SizeConboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) {
NoteContent.Selection.ApplyPropertyValue(FontSizeProperty, SizeConboBox.Text);
}
另一件值得一提的事情是,如果我将我的字体系列更改为“Arial”,它会正常工作,但其余的则不行,或者有时我必须更改两次才能看到效果
Note:此问题总结整理于:Change font size
请尝试以下代码来更改您的 FontSize: Xaml 代码为:
<RichTextBox Name="rtf" Width="200" Height="200" SelectionChanged="rtf_SelectionChanged" >
<FlowDocument>
<Paragraph>
<Run>Paragraph 1</Run>
</Paragraph>
<Paragraph>
<Run>Paragraph 2</Run>
</Paragraph>
<Paragraph>
<Run>Paragraph 3</Run>
</Paragraph>
</FlowDocument>
</RichTextBox>
<WrapPanel VerticalAlignment="Center" Width="100">
<ComboBox x:Name="FontSizeCombo" Height="23" Width="40" Margin="5,2,5,2" IsEditable="True" SelectionChanged="OnFontSizeComboSelectionChanged">
</ComboBox>
</WrapPanel>
C# 代码为:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Initialize();
}
private void Initialize()
{
FontSizeCombo.Items.Add("10");
FontSizeCombo.Items.Add("12");
FontSizeCombo.Items.Add("14");
FontSizeCombo.Items.Add("18");
FontSizeCombo.Items.Add("24");
FontSizeCombo.Items.Add("36");
}
private void OnFontSizeComboSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (FontSizeCombo.SelectedItem == null) return;
if (FontSizeCombo.SelectedItem.ToString() == "{DependencyProperty.UnsetValue}")
{
FontSizeCombo.SelectedItem = null;
return;
}
var pointSize = FontSizeCombo.SelectedItem.ToString();
var pixelSize = Convert.ToDouble(pointSize) * (96 / 72);
var textRange = new TextRange(rtf.Selection.Start, rtf.Selection.End);
textRange.ApplyPropertyValue(TextElement.FontSizeProperty, pixelSize);
}
private void rtf_SelectionChanged(object sender, RoutedEventArgs e)
{
var textRange = new TextRange(rtf.Selection.Start, rtf.Selection.End);
var fontSize = textRange.GetPropertyValue(TextElement.FontSizeProperty);
FontSizeCombo.Text = fontSize.ToString();
}
}
结果图片为:
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。