在WPF中应用来自DataTemplates的转换
本文关键字:DataTemplates 转换 WPF 应用 | 更新日期: 2023-09-27 18:18:24
我在ResourceDictionary
文件中为我的对象创建了一个DataTemplate。模板基本上是从磁盘加载的映像。现在,发生的事情是,我想对齐图像到我的画布上的一个特定的点,但不是它的左上角的点,而是它的中心点,这就是为什么我想对X = -Width / 2
和应用平移变换Y = -Height / 2
,但我不知道如何通过DataTemplate应用它们。
任何帮助将不胜感激,谢谢!
尝试使用画布'的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>
您可以使用sender对象在.cs文件中编写转换代码。