1

私はテキストでWPFに取り組んでいます。FontDialog を使用してテキストを編集したいのですが、現在のテキストのスタイルを FontDialog に設定できないため、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;
        }
4

2 に答える 2

2

WPF の Font オブジェクトは、FontDialog が返す Windows フォームの Font オブジェクトとは異なります。

  1. Fontsize はエラーになりませんが、WPF の Font Sizes は WinForms とは異なります。
  2. フォント名を設定するには、 FontFamilyConverterを使用する必要があります。
  3. 下線と取り消し線は WPF の TextDecorations です
  4. Font Style および Font Weight プロパティについては、条件付きロジックを使用してプロパティを設定できます。

Font オブジェクトが異なるため、Wpf にネイティブなものを使用することをお勧めします。Wpf Text ブログにサンプル フォント チューザーがあります。検討することをお勧めします。

このようなもの:

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;
}
于 2012-07-20T04:29:47.153 に答える