在运行时从数据模板应用渲染变换

时间:2012-08-14 10:01:04

标签: c# silverlight

我有一个silverlight应用程序,其中我有一个数据模板如下

<DataTemplate x:Name="Template">
<StackPanel>
    <TextBlock Text="{Binding txtCap}"/>
    <Grid>
       <Grid.RenderTransform>
           <CompositeTransform/>
           <TranslateTransform x:Name="gridTransform" X="0" Y="0"/>
       </Grid.RenderTransform>
        <ContentControl Content="{Binding txtContent}"/>
    <Grid>
<StackPanel>
</DataTemplate>

data templateitems control的模板,而项目控件本身则绑定到ObservableCollection

在代码中,我实际上能够获取我正在拖动的任何网格(例如:鼠标按下事件中的sender as Grid)但是我想问一下当我实际应用变换时如何有这个控制权? 例如:我在鼠标事件中有这个:var targetLB = sender as ContentControl;
但是如何在运行时将translate变换应用于此元素?

如果这不在数据模板中,我会直接访问TranslateTransform的名称并完成类似this.gridTransform.X = ...等的操作。

1 个答案:

答案 0 :(得分:0)

您也可以绑定Transform的属性。

编辑:

  

在代码中,我实际上能够获取我正在拖动的任何网格(例如:发送者作为鼠标按下事件中的网格)

如果您有网格,可以像这样获取TranslateTransform对象:

        var transform = ((sender as Grid).RenderTransform as TransformGroup).Children[1] as TranslateTransform;
        transform.X = ...
        transform.Y = ...
相关问题