2014-11-21 147 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