Autor Beitrag
Biplane
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 27.06.11 20:50 
Hallo,

da ein Canvas von Panel und nicht von Control abgeleitet ist, kann man leider kein ControlTemplate zuordnen. Daher kann ich leider folgende XAML-Syntax nicht realisieren...

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
<Canvas Template=... Width="1000" Height="500"
   <TextBox Canvas.Top="10" Canvas.Left="20"/> 
   <Canvas Template=... Canvas.Top="50" Canvas.Left="10" Width="200" Height="100">
      <CheckBox Canvas.Top="10" Canvas.Left="20" /> 
   </Canvas>
</Canvas>


Der Canvas soll NICHT einfach nur unsichtbar oder mit einem einfach Rahmen dargestellt werden, sondern mit einem eigenen Layout. Beispielsweise oben mit einem 20 Pixel hohem Schriftzug unter dem dann der eigentliche Canvasbereich beginnt.

Bin dankbar für jeden Tipp.

Viele Grüße Ralph

Moderiert von user profile iconChristian S.: XML-Tags hinzugefügt
IsNull
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 97
Erhaltene Danke: 11


VS 2010, C#, AHK
BeitragVerfasst: Mi 29.06.11 10:05 
Du kannst entweder ein UserControl definieren, welches dann ein composite aus TextBlock + deinem Canvas ist, oder was viel flexibler sein wird, ein eigenes Control machen.

Dann hast du also ein Control und in diesem dann dein Canvas und Textblock.


Du erbst also von ItemsControl, und im Constructor setzt du im Code setzt du ein Template auf.


Als Beispiel hier das Template von dem GMaps Map Control:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
                <ItemsControl Name="figures">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <ContentPresenter Content="{Binding Path=Shape}" />
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <Canvas />
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.ItemContainerStyle>
                        <Style>
                            <Setter Property="Canvas.Left" Value="{Binding Path=LocalPositionX}"/>
                            <Setter Property="Canvas.Top" Value="{Binding Path=LocalPositionY}"/>
                        </Style>
                    </ItemsControl.ItemContainerStyle>
                </ItemsControl>