Применение преобразований из DataTemplates в WPF - PullRequest
0 голосов
/ 21 декабря 2011

Я создал DataTemplate для моих объектов в файле ResourceDictionary.Шаблон в основном это изображение, которое загружается с диска.Теперь происходит то, что я хочу выровнять изображение по определенной точке на холсте, но не по его верхней левой точке, а по центру, поэтому я хочу применить преобразование преобразования для X = -Width / 2 и Y = -Height / 2, но яне знаю, как применять их через DataTemplate.

Любая помощь будет оценена, спасибо!

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Попробуйте использовать привязку данных на 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>
1 голос
/ 21 декабря 2011

вы можете использовать преимущество загруженного события в дочернем шаблоне данных. Пример:

если вы используете сетку в качестве содержимого шаблона данных

<DataTemplate>
 <Grid Loaded="Grid_Loaded">
   <Image></Image>
 </Grid>
</DataTemplate>

, вы можете написать код преобразования вфайл .cs с использованием объекта отправителя.

...