我想在WPF .net 4.5中显示颜色和字体对话框,我该怎么办? 请帮助我任何人。
Thnx in Advanced!
答案 0 :(得分:7)
最好的开箱即用解决方案是使用FontDialog
表单System.Windows.Forms
程序集,但您必须将其输出转换为将其应用于WPF元素。
FontDialog fd = new FontDialog();
var result = fd.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
Debug.WriteLine(fd.Font);
tbFonttest.FontFamily = new FontFamily(fd.Font.Name);
tbFonttest.FontSize = fd.Font.Size * 96.0 / 72.0;
tbFonttest.FontWeight = fd.Font.Bold ? FontWeights.Bold : FontWeights.Regular;
tbFonttest.FontStyle = fd.Font.Italic ? FontStyles.Italic : FontStyles.Normal;
TextDecorationCollection tdc = new TextDecorationCollection();
if (fd.Font.Underline) tdc.Add(TextDecorations.Underline);
if (fd.Font.Strikeout) tdc.Add(TextDecorations.Strikethrough);
tbFonttest.TextDecorations = tdc;
}
请注意,winforms对话框不支持许多WPF字体属性,例如额外的粗体字体。
颜色对话框更容易:
ColorDialog cd = new ColorDialog();
var result = cd.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
tbFonttest.Foreground = new SolidColorBrush(Color.FromArgb(cd.Color.A, cd.Color.R, cd.Color.G, cd.Color.B));
}
虽然它不支持alpha。
答案 1 :(得分:1)
您可以使用System.Windows.Forms
中的类,使用它们没有任何问题。您可能需要将值转换为WPF特定的。
或者,您可以实施自己的对话框或使用第三方控件,请参阅Free font and color chooser for WPF?。