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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top