【问题标题】:Get automatically determined value of FlowDocument.PageWidth property获取 FlowDocument.PageWidth 属性的自动确定值
【发布时间】:2017-12-04 08:07:42
【问题描述】:

我有一个 WPF RichTextBox 控件,我将 RichTextBox.Document.PageWidth 属性的值设置为 double.NaN 以便自动确定该值。

现在我想获取自动确定的值,但我无法通过读取属性的值来实现,因为它返回 double.NaN

编辑

我尝试在可以设置为自动的属性的OnMyPropertyChanged 方法中获取RichTextBox.DesiredSize 的值(值为double.NaN):

if (!double.IsNaN(MyProperty)) richTextBox.Width = MyProperty;
else richTextBox.Width = richTextBox.DesiredWidth;

但是,DesiredSize 在两个轴上都返回 0。

【问题讨论】:

    标签: c# wpf width richtextbox flowdocument


    【解决方案1】:

    这是设计使然... RichTextBox 旨在存在于固定宽度的视图中。应该可行的解决方法 - 将其放入边框,并将富文本框的宽度绑定到边框的 ActualWidth。

    干杯。

    【讨论】:

    • 不错的主意,但如果我将任何 Width 属性设置为 auto,则会调整宽度,以便控件的右边界位于其包含控件的右边界。因此,没有类似 Width 的属性会根据富文本框中的文本宽度调整其值。它在常规文本框或文本块中这样做,而不是在富文本框中。无论如何,我想出了一个粗鲁的解决方案,但效果很好,我将其发布为答案。
    【解决方案2】:

    创建一个TextBlock控件(不必将其添加到任何父控件),设置您需要获取宽度的文本值,以及字体属性(FontFamilyFontStyleFontWeightFontStretchFontSize),然后调用控件上的Measure 方法,使其确定其DesiredSize 属性的值,然后可以读取。

    【讨论】:

      猜你喜欢
      • 2013-05-30
      • 2023-03-03
      • 1970-01-01
      • 2011-03-18
      • 2013-04-16
      • 2015-05-06
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多