2014-11-21 134 views
0

我有一個Path形狀,我想綁定到StreamGeometry。此StreamGeometry也有一個Transform屬性應該綁定。綁定到一個屬性,也是它的一個屬性

我的viewmodel有ScaleTransformDatGeometry類型的屬性StreamGeometry類型。

現在我不知道如何綁定到這些屬性。下面是我的了:

<Path> 
     <Path.Data>    
      <GeometryGroup Transform="{Binding Scale}"> 
       <!-- Want to bind to "DatGeometry" here, or something equivalent 
        (if possible without resorting to GeometryGroup --> 
      </GeometryGroup> 
     </Path.Data> 
    </Path> 

另一種方法可以是:

<Path Data="{Binding DatGeometry}"> 
     <!-- But how should I assess "DatGeometry.Transform" now, 
      so that I could bind "Scale" to it? --> 
    </Path> 
+0

爲什麼你就不能與分配的範圍內創造DatGeometry。他們來自同一視圖模型不是嗎? – 2014-11-21 14:13:24

+0

你甚至可以在視圖模型中創建一個Binding to Transform屬性。 – 2014-11-21 14:16:48

+0

@GregorStamač告訴我一件事情:如果DatGeometry帶有Scale分配,那麼如果我更改Scale,DatGeometry中渲染的任何東西是否也會更新?我的想法是,我可以在某種程度上「獨立」更新變換(因爲幾何本身不會改變)。 – heltonbiker 2014-11-21 14:49:55

回答

1

也許這樣

<Path Data="{Binding DatGeometry}"> 
    <Path.RenderTransform> 
     <ScaleTransform ScaleX="{Binding Scale}" ScaleY="{Binding Scale}"/> 
    </Path.RenderTransform> 
</Path> 
+0

'Path.LayoutTransform'可能是一個更好的選擇,但除此之外,我會一起去。 – 2014-11-21 14:04:23

+0

那麼,這是我試圖避免的影響:這會扭曲路徑厚度。通過在渲染之前轉換幾何圖形而不是渲染輸出,我希望具有恆定的,與比例無關的路徑厚度。順便說一句,如果這不是問題,它的工作非常好(已經在另一個應用程序中使用了這種方法)。 – heltonbiker 2014-11-21 14:05:47

+0

(另外請注意,我對這裏的綁定問題比圖形/繪圖/渲染問題更好奇,涉及的類型和手頭的任務在問題的背景下是偶然的) – heltonbiker 2014-11-21 14:07:17