Question

J'ai un contrôle simple dérivé de ContentControl avec 3 propriétés.

Mon problème vient quand je tente d'effectuer une control.TransformToVisual () avec une commande qui est placé à l'intérieur MainContent. Il apporte toujours un ArgumentNullException.

Je pense cela en raison du contrôle ayant une propriété de parent null. Y at-il un moyen simple de façon de contourner cela?

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>

Pas de solution correcte

Autres conseils

Avez-vous essayé d'utiliser la balise ContentPresenter classe au lieu de la classe ContentControl au sein de votre ControlTemplate pour présenter ces propriétés dans le modèle? Je ne sais pas si elle est liée à votre ArgumentNullException, mais généralement le contenu d'un ContentControl est exposé sur le modèle via un ContentPresenter.

Depuis votre contrôle de dérive de la ContentControl ContentPresenter se lient automatiquement le contenu et les propriétés ContentTemplate pour vous quelle que soit la propriété de contenu est défini sur. Vous la propriété Content bind pourrait aussi manuellement du ContentPresenter à votre propriété ValidationContent.

Je ne sais pas pourquoi vous définissez une propriété Maincontent lorsque la ContentControl de base vous donne déjà une propriété de contenu à utiliser, peut-être qui est un deuxième morceau de contenu que vous essayez d'exposer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top