我在ResourceDictionary
文件中为我的对象创建了一个DataTemplate。该模板基本上是从磁盘加载的映像。现在,发生的情况是,我想将图像与Canvas上的特定点对齐,但不是左上角的点,而是其中心点,这就是为什么我想对X = -Width/2
和 Y = -Height/2
应用平移变换,但是我没有知道如何通过DataTemplate应用它们。从WPF中的DataTemplates应用变换
任何帮助将不胜感激,谢谢!
我在ResourceDictionary
文件中为我的对象创建了一个DataTemplate。该模板基本上是从磁盘加载的映像。现在,发生的情况是,我想将图像与Canvas上的特定点对齐,但不是左上角的点,而是其中心点,这就是为什么我想对X = -Width/2
和 Y = -Height/2
应用平移变换,但是我没有知道如何通过DataTemplate应用它们。从WPF中的DataTemplates应用变换
任何帮助将不胜感激,谢谢!
尝试在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>
您可以使用加载事件上的数据模板孩子 例的优势:
如果您使用网格,数据模板内容
<DataTemplate>
<Grid Loaded="Grid_Loaded">
<Image></Image>
</Grid>
</DataTemplate>
你可以写在变换代码。使用发件人对象的cs文件。
感谢您的信息,肯定会尝试其他的东西,我需要的事件。 –
我做了另一种方式(通过为X和Y偏移量创建一个属性,并将其简单地绑定到一个'Image.RenderTransform',但我想你使用转换器的方式可以工作得一样好。那么这将是我的下一步。谢谢!:) –
当然,祝你好运:-) –