2011-08-02 99 views
1

我試着在FlowDocument中做一些內容,通過矩形進行高亮顯示。像下面的代碼:WPF:動態獲取跨度寬度

<FlowDocument> 
    <Paragraph> 
     <Span> 
      here is a span. 
      <Span.Background> 
       <VisualBrush> 
        <VisualBrush.Visual> 
         <Rectangle Fill="Gray" RadiusX="5" RadiusY="5" Width="100" Height="50"/> 
        </VisualBrush.Visual> 
       </VisualBrush> 
      </Span.Background> 
     </Span> 
    </Paragraph> 
<FlowDocument> 

我想設置矩形的寬度和高度跨度。 我怎樣才能得到跨度的實際寬度和高度,這取決於跨度的內容的長度?

增加:

它沒有工作。 (它在設計時發生System.InvalidOperationException)

<FlowDocument> 
    <Paragraph> 
     <Span> 
      Here is a span. 
      <Span.Background> 
       <VisualBrush> 
        <VisualBrush.Visual> 
         <Rectangle Fill="Gray" RadiusX="5" RadiusY="5" Height="50" Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Span}}, Path=Width}"/> 
        </VisualBrush.Visual> 
       </VisualBrush> 
      </Span.Background> 
     </Span> 
    </Paragraph> 
</FlowDocument> 

回答

1

嘗試是這樣的

Width="{Binding RelativeSource= 
{RelativeSource FindAncestor, 
AncestorType={x:Type Span}}, 
Path=ActualWidth}" 
> 

A轉換器可以在此對比例結合有用的,告訴我,如果你需要一個轉換例子也。

+0

Gab看到我更新的問題。 – mjk6026

+0

@ mjk6026 Path = ActualWidth,它與Path = Width不同。寬度/高度是請求的或佈局大小。 ActualWidth/ActualHeight是渲染大小。有關更多詳細信息,請參閱http://stackoverflow.com/questions/607827/what-is-the-difference-between-width-and-actualwidth-in-wpf – Gab

+0

不,不。這不是重點。它發生錯誤時,我修改寬度爲實際寬度。首先,span類沒有寬度和實際寬度的任何屬性。 – mjk6026