C# FormattedText.FormattedText已过时。使用PixelsPerDip覆盖

C# FormattedText.FormattedText已过时。使用PixelsPerDip覆盖,c#,wpf,formatted-text,C#,Wpf,Formatted Text,我正在尝试将标签填充到水平滑块上,并且通过将文本传递给FormattedText构造函数,我成功地使用了一个从TickBar派生的类。但现在,当我将相同的代码粘贴到使用.NET Framework 4.6.2版的Visual Studio中时,它会说: FormattedText.FormattedText已过时。使用PixelsPerDip覆盖 我提到 但在目前的情况下,我如何使用它呢。请帮忙 FormattedText formattedText = new FormattedText(te

我正在尝试将标签填充到水平滑块上,并且通过将文本传递给FormattedText构造函数,我成功地使用了一个从
TickBar
派生的类。但现在,当我将相同的代码粘贴到使用.NET Framework 4.6.2版的Visual Studio中时,它会说:

FormattedText.FormattedText已过时。使用PixelsPerDip覆盖

我提到

但在目前的情况下,我如何使用它呢。请帮忙

FormattedText formattedText = new FormattedText(text, CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface("Verdana"), 16, Brushes.Black);
dc.DrawText(formattedText, new Point((tickFrequencySize * i), 30)); //dc is Drawing Context.
以下是完整的课程:

public class CustomTickBar : TickBar
    {
        public static string FontTextList { get; set; }
        protected override void OnRender(DrawingContext dc)
        {
            //string str = "Small, Medium, Large, Extra\n Large";
            if (!string.IsNullOrEmpty(FontTextList))
            {
                string[] ar = FontTextList.Split(',');

                Size size = new Size(base.ActualWidth, base.ActualHeight);
                int tickCount = (int)((this.Maximum - this.Minimum) / this.TickFrequency) + 1;
                //int tickCount = 4; 
                if ((this.Maximum - this.Minimum) % this.TickFrequency == 0)
                    tickCount -= 1;
                Double tickFrequencySize;
                // Calculate tick's setting
                tickFrequencySize = (size.Width * this.TickFrequency / (this.Maximum - this.Minimum));
                string text = "";
                FormattedText formattedText = null;
                double num = this.Maximum - this.Minimum;
                int i = 0;
                // Draw each tick text
                for (i = 0; i <= tickCount; i++)
                {

                    //text = Convert.ToString(Convert.ToInt32(this.Minimum + this.TickFrequency * i), 10);
                    text = ar[i];
                    formattedText = new FormattedText(text, CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface("Verdana"), 16, Brushes.Black);
                    dc.DrawText(formattedText, new Point((tickFrequencySize * i), 30));


                }
            }
        }
公共类CustomTickBar:TickBar
{
公共静态字符串FontTextList{get;set;}
受保护的覆盖无效OnRender(DrawingContext dc)
{
//string str=“小、中、大、特大”;
如果(!string.IsNullOrEmpty(FontTextList))
{
字符串[]ar=FontTextList.Split(',');
尺寸=新尺寸(base.ActualWidth,base.ActualHeight);
int tickCount=(int)((this.Maximum-this.Minimum)/this.TickFrequency)+1;
//int tickCount=4;
如果((this.Maximum-this.Minimum)%this.TickFrequency==0)
滴答数-=1;
双频大小;
//计算滴答声的设置
tickFrequencySize=(size.Width*this.TickFrequency/(this.Maximum-this.Minimum));
字符串文本=”;
FormattedText FormattedText=null;
double num=此.Maximum-此.Minimum;
int i=0;
//绘制每个勾号文本
对于(i=0;i试试这个:

FormattedText formattedText = new FormattedText(text, CultureInfo.GetCultureInfo("en-us"),
    FlowDirection.LeftToRight, new Typeface("Verdana"), 16, Brushes.Black,
    VisualTreeHelper.GetDpi(this).PixelsPerDip);

如果它对某人有帮助。我正在使用#pragma warning disable来禁用错误。但是如果有人知道有帮助的替代方法。我看过此MSDN文档,但没有找到解决方案。现在,经过一些搜索,这里是MSDN