Hallo,
hab schon länger nichts mehr mit c# udn WPF gemacht und bin ein bisschen eingerostet. Ich versuche in einer custom controly libary ein canvas zu erstellen auf dem die controls verschoben werden können.
Ich orientiere mich an diesem Beispiel: WPF Diagram Designer: Part 1
Mein Template sieht so aus:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:GraphVisualization}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<Canvas Background="{TemplateBinding Background}" x:Name="_Canvas">
<Canvas.Resources>
<ControlTemplate x:Key="DesignerItemTemplate" TargetType="ContentControl">
<Border DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="Transparent" BorderThickness="0">
<StackPanel Background="Green">
das <!--Here we place our MoveAbelItem control to give the contentpresenter the ability that it can be moved-->
<local:MoveAbelItem Cursor="SizeAll"/>
<!--The ContentPresenter can be for example the VertexVisualization control -->
<ContentPresenter Content="{TemplateBinding ContentControl.Content}" />
</StackPanel>
</Border>
</ControlTemplate>
</Canvas.Resources>
<ContentControl Template="{StaticResource DesignerItemTemplate}"></ContentControl>
</Canvas>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
Im Codebehind füge ich über
Canvas.Children.Add(vertexcontrol);
mein control hinzu was auch klappt. Aber anscheinend, erhält dieses Control nicht den ContentControlStyl DesignerItemTemplate, weil die Controls keinen grünen Hintergrund haben. Außerdem müsste sich der Maus Cursor ändern.
Hat jemand eine Idee warum die hinzugefügten Controls nicht das ControlTemplate DesignerItemTemplate zugewiesen bekommen (sollte ja auto. gehen, weil sie im Canvas.Content sind)?
LG
brief
Schaut mal im IRC vorbei:
Server: https://libera.chat/ ##chsarp
Ich musste "um" das vertexcontrol logischerweise das ContentControl legen. Außerdem muss man, die Propertie Template im Codebehind manuel festlegen. Ich ging davon aus, dass wenn der Style wie folgt definiert ist
<ControlTemplate TargetType="ContentControl">
auto. an alle ContentControls hinzugefügt wird (also auch die Controls welche ich zut Laufzeit im Codebehind anlege), was dem aber so nicht ist.
Schaut mal im IRC vorbei:
Server: https://libera.chat/ ##chsarp