Kontrolle der Eltern ist null, wenn sie innerhalb eines Content platziert
-
29-09-2019 - |
Frage
Ich habe eine einfache Kontrolle bekam, abgeleitet von ContentControl
mit 3 Eigenschaften.
Mein Problem kommt, wenn ich versuche, eine control.TransformToVisual () mit einer Steuerung auszuführen, die innerhalb MainContent
platziert wird. Es bringt immer ein ArgumentNullException
.
Meine Vermutung ist dies aufgrund der Steuerung eine Null-Parent-Eigenschaft aufweist. Gibt es eine einfache Möglichkeit, um den Weg, um dies?
C #
public static readonly DependencyProperty LabelTextProperty =
DependencyProperty.Register("LabelText", typeof(string), typeof(LabelledControl), null);
public static readonly DependencyProperty ValidationContentProperty =
DependencyProperty.Register("ValidationContent", typeof(object), typeof(LabelledControl), null);
public static readonly DependencyProperty MainContentProperty =
DependencyProperty.Register("MainContent", typeof(object), typeof(LabelledControl), null);
XAML
<Style TargetType="local:LabelledControl">
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:LabelledControl">
<StackPanel Margin="0 10 0 0">
<StackPanel Orientation="Vertical">
<dataInput:Label Content="{TemplateBinding LabelText}" FontWeight="Bold" FontSize="12" IsTabStop="False"/>
<ContentControl Content="{TemplateBinding ValidationContent}" IsTabStop="False"/>
</StackPanel>
<ContentControl x:Name="_contentControl" Content="{TemplateBinding MainContent}" IsTabStop="False"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Keine korrekte Lösung
Andere Tipps
Haben Sie versucht, die ContentPresenter
Klasse statt die ContentControl
Klasse in Ihrem Control diese Eigenschaften in der Vorlage zu präsentieren? Ich bin nicht sicher, ob es zu einem Argument verwandt ist, aber in der Regel der Inhalt eines ContentControl
wird auf der Vorlage über einen ContentPresenter
ausgesetzt.
Da Ihr Kontrolle ergibt sich aus ContentControl
die ContentPresenter
automatisch binden den Inhalt und das Content Eigenschaften für Sie zu, was auch immer der Inhalt-Eigenschaft auf. Sie könnten auch manuell binden die Content-Eigenschaft des ContentPresenter
auf Ihre ValidationContent Eigenschaft.
Ich bin nicht sicher, warum Sie eine Eigenschaft maincontent definieren, wenn die Basis ContentControl
bereits gibt Ihnen ein Content-Eigenschaft zu verwenden, vielleicht, dass ein zweiter Teil des Inhalts ist es, Ihnen entlarven wollen.