我有一个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 template
是items control
的模板,而项目控件本身则绑定到ObservableCollection
在代码中,我实际上能够获取我正在拖动的任何网格(例如:鼠标按下事件中的sender as Grid
)但是我想问一下当我实际应用变换时如何有这个控制权?
例如:我在鼠标事件中有这个:var targetLB = sender as ContentControl;
但是如何在运行时将translate变换应用于此元素?
如果这不在数据模板中,我会直接访问TranslateTransform的名称并完成类似this.gridTransform.X = ...
等的操作。
答案 0 :(得分:0)
您也可以绑定Transform的属性。
编辑:
在代码中,我实际上能够获取我正在拖动的任何网格(例如:发送者作为鼠标按下事件中的网格)
如果您有网格,可以像这样获取TranslateTransform对象:
var transform = ((sender as Grid).RenderTransform as TransformGroup).Children[1] as TranslateTransform;
transform.X = ...
transform.Y = ...