Hallo,
ich möchte ein Control basteln, welches eine spezielle Form hat und aus einem Button besteht, sowie einem Rechteck auf dem der Content als string ausgegeben wird.
Folgendes habe ich bisher:
<UserControl x:Class="UserControlTest.FilterControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:UserControlTest"
mc:Ignorable="d"
Height="25" Width="117.833">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<Rectangle Fill="#FFA0A0A0"/>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Polygon Grid.Column="1" Points="0,0 20,12.5 0,25" Fill="#FFA0A0A0"/>
<Button Width="9" Height="9" Grid.Column="1" Margin="2,7.5,8,7.5" Click="Button_Click">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Stroke="Black" StrokeThickness="1"/>
<Line X1="7.5" Y1="7.5" X2="1.75" Y2="1.75" Stroke="Black"/>
<Line X1="7.5" Y1="1.75" X2="1.75" Y2="7.5" Stroke="Black"/>
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>
</UserControl>
Das sieht soweit im designer ganz gut aus. Instanziiere ich das Ganze nun aber, ist lediglich der text zu sehen und alles andere ist weg. Ausser ich weise keinen Content zu, dann sieht es aus wie im designer.
Was mache ich denn falsch?
Grüße
Nimm als Basis ein ContentControl anstatt ein UserControl.
Leider verhält es sich dann genauso 😦 Nutze ich den ContentPresenter nicht richtig?
Vermutlich ist das Problem, dass es ein "komplettes" UserControl ist.
Dass was du möchtest ist eher ein Custom Control:
https://blogs.msdn.microsoft.com/windowsappdev/2012/10/15/building-a-custom-control-using-xaml-and-c/
Bei Custom Controls trennt man quasi Code und XAML voneinander. Deine Klasse kann dann von einem ContentControl erben.
=)
Hat dein FilterControl eine Content-Eigenschaft, aus der der ContentPresenter seinen Inhalt beziehen kann?
Vermutlich ist das Problem, dass es ein "komplettes" UserControl ist.
Dass was du möchtest ist eher ein Custom Control:
>Bei Custom Controls trennt man quasi Code und XAML voneinander. Deine Klasse kann dann von einem ContentControl erben.
=)
Dann erstellt mir VS keine XAML datei 🤔
@pinki: Ja es erbt wohl eine Content-Eigenschaft.
Dann erstellt mir VS keine XAML datei 👶
Das ist korrekt, die musst du selber anlegen.
Stichwort: ResourceDictionary
@pinki: Ja es erbt wohl eine Content-Eigenschaft.
In deinem UserControl definierst du den kompletten Content, "von außen" überschreibst du ihn dann wieder. Deswegen geht es nicht.
Schau dir auch mal die Property "ContentTemplate" an.
Weitere Infos kannst du hier finden.