Laden...

Resourcenelemente mit dynamischen Transformationen in z-Richtung stapeln

Erstellt von wackelkontakt vor 12 Jahren Letzter Beitrag vor 12 Jahren 425 Views
wackelkontakt Themenstarter:in
109 Beiträge seit 2011
vor 12 Jahren
Resourcenelemente mit dynamischen Transformationen in z-Richtung stapeln

Hallo, ich hänge schon eine ganze Weile an einem Problem und hoffe ihr könnt mir helfen.

Ich würde gern Visu-Elemente in z-Richtung stapeln. Als ein Visu-Element würde ich gern ein FrameworkElement (beispielsweise Path) welches als Resource definiert ist mit verschiedenen Transformationen versehen und anzeigen.

Die Klasse mit den Informationen für jedes Element sieht so aus:

    public class XamlItem
    {
        public string ResourceName { get; set; }
        public int Rotation { get; set; }
        public int TranslationX { get; set; }
        public int TranslationY { get; set; }
    }

2 Sachen habe ich bisher versucht:

  1. über einen Converter die einzelnen Elemente hinzuzufügen:
                <ItemsControl 
                    ItemsSource="{Binding Cell.XamlItems}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <Label
                                Content="{Binding Converter={StaticResource converter}}"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <Grid/>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                </ItemsControl>

Jedoch wird hier das das FrameworkElement (obwohl wie gesagt als Resource definiert) nur einmal dargestellt?! Sollte es nicht so sein das Resourcen mehrfach verwendet werden können?

  1. habe ich versucht das Ganze über den DataTemplateSelector zu lösen (vermutlich auch die bessere Variante)
<ContentPresenter Content="{Binding Cell}" ContentTemplateSelector="{StaticResource templateSelector}"

Ich bekomme es jedoch in der SelectTemplate - Methode nicht hin die Resourcen zu dem DataTemplate im Code hinzuzufügen:

                        DataTemplate dt = new DataTemplate();

                        FrameworkElement element = ((Control)obj).TryFindResource(xamlItem.ResourceName) as FrameworkElement;
                        RotateTransform rt = new RotateTransform(xamlItem.Rotation);
                        element.RenderTransform = rt;

Tja und wie jetzt weiter? Ich vermute mal über die FrameworkElementFactory aber iregndwie bekomme ich das Element nicht hinzugefügt (ich hoffe ja das die Resource in diesem Fall mehrfach verwendet werden kann).

Kann mir jemand weiterhelfen? Oder gibt es noch eine bessere Lösung?

Danke fürs Durchlesen 😉

Um Rekursion zu verstehen, muss man erst mal Rekursion verstehen, muss man erst mal Rekursion verstehen, ....