2012-07-20 78 views
1

我正在使用WPF和文本。现在我想使用FontDialog编辑文本,但是我无法将当前的文本样式设置为FontDialog,所以每次调用FontDialog时都会更改文本的样式。你们能帮我吗?将值设置为WPF中的FontDialog

这是我的代码:

System.Windows.Forms.FontDialog fontDialog = new System.Windows.Forms.FontDialog(); 
     if (fontDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      this.textAnnotation.Font.Size = fontDialog.Font.Size; 
      this.textAnnotation.Font.Name = fontDialog.Font.Name; 
      this.textAnnotation.Font.Underline = fontDialog.Font.Underline; 
      this.textAnnotation.Font.Strikeout = fontDialog.Font.Strikeout; 
      this.textAnnotation.Font.Bold = fontDialog.Font.Bold; 
      this.textAnnotation.Font.Italic = fontDialog.Font.Italic; 
     } 

回答

2

在WPF的字体对象比在Windows窗体中,你的FontDialog类返回Font对象不同。

  1. Fontsize不会错误,但WPF Font Size与WinForms不同。
  2. 您将需要使用FontFamilyConverter来设置字体名称。
  3. 下划线和删除是WPF中的文字装饰
  4. 对于字体样式和字体加权属性,可以使用条件逻辑来设置属性。

由于Font对象不同,您最好使用Wpf本地的东西。 Wpf Text博客上有一个Sample Font Chooser。我会建议看看它。

是这样的:

System.Windows.Forms.FontDialog fontDialog = new System.Windows.Forms.FontDialog(); 
if (fontDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
{ 
    FontFamilyConverter ffc = new FontFamilyConverter(); 

    this.textAnnotation.FontSize = fontDialog.Font.Size; 
    this.textAnnotation.FontFamily =(FontFamily)ffc.ConvertFromString(fontDialog.Font.Name); 

    if (fontDialog.Font.Bold) 
     textAnnotation.FontWeight = FontWeights.Bold; 
    else 
     textAnnotation.FontWeight = FontWeights.Normal; 

    if (fontDialog.Font.Italic) 
     textAnnotation.FontStyle = FontStyles.Italic; 
    else 
     textAnnotation.FontStyle = FontStyles.Normal; 
} 
+0

感谢马克·霍尔......但我的意思是我想文字的当前样式设置为FontDialog类。例如:我创建新的注释文本。我调用字体对话框编辑文本,完成后点击确定。然后我再次调用字体对话框,但它设置了默认值。那么如何设置FontDialog的文本样式呢? – rockydant 2012-07-20 04:43:14

+0

@ user1276594也许我并不理解,但是我上面给出的代码**将会改变FontFamily,Size,FontWeight和FontStyle。这两个字体对象非常不同,并且没有简单的方法来完成完整的转换。这就是为什么我建议你看看Sample Font Chooser,它是一个本地的wpf字体对话框。 – 2012-07-20 04:47:04

+0

@ user1276594 - 我想我明白他在说什么。他希望能够在下次他调用它时将删除线,下划线等设置回FontDialog。于是,他可以从WPF文本传送回设定的FontDialog类 - 我试图做同样的事情。 – 2013-11-15 22:32:59

相关问题