我在ResourceDictionary
文件中为我的对象创建了一个DataTemplate。模板基本上是从磁盘加载的图像。现在,我想要将图像对齐到我的画布上的特定点,而不是它的左上角但是它的中心点,这就是为什么我要为X = -Width / 2
应用转换变换的原因
Y = -Height / 2
但我不知道如何通过DataTemplate应用它们。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
您可以利用在数据模板子上使用加载的事件 例如:
如果您使用网格作为数据模板内容
<DataTemplate>
<Grid Loaded="Grid_Loaded">
<Image></Image>
</Grid>
</DataTemplate>
您可以使用发件人对象在.cs文件中编写转换代码。
答案 1 :(得分:1)
尝试在Canvas上使用数据绑定'AttachedProperties和IValueConverter将偏移量转换为您想要的任何值。
例如:
class ImageToCanvasConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return -(int)value / 2;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// Two-way binding not supported
throw new InvalidOperationException();
}
}
<Grid.Resources>
<myAssembly:ImageToCanvasConverter x:Key="imageToCanvasConverter" />
<DataTemplate ...>
<Image Canvas.Left="{Binding Path=Width, Converter={StaticResource imageToCanvasConverter}, Mode=OneTime}"
Canvas.Top="{Binding Path=Height, Converter={StaticResource imageToCanvasConverter}, Mode=OneTime}"
... />
</DataTemplate>
</Grid.Resources>