PapstRatze
Lt. Junior Grade
- Registriert
- Aug. 2008
- Beiträge
- 436
Wie immer, lande ich am Ende bei euch und erbete um eure Hilfe :
Folgendes Problem habe ich:
Ich bin gerade drauf und dran DataBindings in meinen Schädel zu quetschen. Und nach langem hin und her hänge ich etwas fest. Das Problem ist, dass ich zwei Klassen habe, abgeleitet von einer abstrakten Mutterklasse. Diese möchte ich nun in meinem ItemsControl Binden, allerdings nimmt er die DataTemplates aus dem Window.Resources nicht an. Es ist möglich eine Klasse darzustellen, wenn ich das DataTemplate direkt im ItemsControl festlege.
So funktioniert es, allerdings nur mit einer Klasse:
Ich würde jetzt eigentlich gerne die DataTemplates aus dem Window.Resources verwenden:
Für Tipps jeglicher Art wäre ich sehr dankbar, denn DataBindings sind für mich immer noch ein wenig Neuland und ich würde sehr gerne ein bisschen weiter kommen auf dem Gebiet.
Danke schon mal im Voraus für eure Geistreichen Antworten
#Edit: den x:Key="test" könnt ihr getrost beiseite lassen, das war wie es eigentlich erkennbar ist nur ein Test
#Edit2: Habe mal die Satzzeichen ein wenig besser platziert
#Antwort: Okay, ich habe es jetzt etwas unelegant gelöst, indem ich den Klassen einfach eine "Size" und einen "Brush" beigefügt habe. Falls doch jemand einen Eleganteren Weg kennt, ich bin erpicht darauf von diesem zu Erfahren .
Folgendes Problem habe ich:
Ich bin gerade drauf und dran DataBindings in meinen Schädel zu quetschen. Und nach langem hin und her hänge ich etwas fest. Das Problem ist, dass ich zwei Klassen habe, abgeleitet von einer abstrakten Mutterklasse. Diese möchte ich nun in meinem ItemsControl Binden, allerdings nimmt er die DataTemplates aus dem Window.Resources nicht an. Es ist möglich eine Klasse darzustellen, wenn ich das DataTemplate direkt im ItemsControl festlege.
So funktioniert es, allerdings nur mit einer Klasse:
Code:
<ItemsControl Name="myItemsControl" ItemsSource="{Binding}" Margin="5,5,5,5">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="local:Bakterie">
<Canvas Height="{Binding Path=Size}" Width="{Binding Path=Size}" Margin="5,5,5,5">
<Ellipse Width="5" Height="5" Canvas.Left="{Binding Path=X}" Canvas.Top="{Binding Path=Y}" Fill="Red"/>
</Canvas>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Code:
<Window.Resources>
<DataTemplate DataType="local:Amoebe" x:Key="test">
<Canvas Height="{Binding Path=Size}" Width="{Binding Path=Size}" Margin="5,5,5,5">
<Ellipse Width="10" Height="10" Canvas.Left="{Binding Path=X}" Canvas.Top="{Binding Path=Y}" Fill="Green"/>
</Canvas>
</DataTemplate>
<DataTemplate DataType="local:Bakterie">
<Canvas Height="{Binding Path=Size}" Width="{Binding Path=Size}" Margin="5,5,5,5">
<Ellipse Width="5" Height="5" Canvas.Left="{Binding Path=X}" Canvas.Top="{Binding Path=Y}" Fill="Red"/>
</Canvas>
</DataTemplate>
</Window.Resources>
Danke schon mal im Voraus für eure Geistreichen Antworten
#Edit: den x:Key="test" könnt ihr getrost beiseite lassen, das war wie es eigentlich erkennbar ist nur ein Test
#Edit2: Habe mal die Satzzeichen ein wenig besser platziert
#Antwort: Okay, ich habe es jetzt etwas unelegant gelöst, indem ich den Klassen einfach eine "Size" und einen "Brush" beigefügt habe. Falls doch jemand einen Eleganteren Weg kennt, ich bin erpicht darauf von diesem zu Erfahren .
Zuletzt bearbeitet: