Domanda

Ho un semplice controllo derivato da ContentControl con 3 proprietà.

Il mio problema arriva quando si tenta di eseguire un control.TransformToVisual () con un controllo che viene inserito all'interno MainContent. Porta sempre un ArgumentNullException.

La mia ipotesi è questo a causa del controllo che ha una proprietà Parent nulla. C'è un modo semplice per modo per aggirare questo?

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>

Nessuna soluzione corretta

Altri suggerimenti

Hai provato a usare il ContentPresenter classe invece della classe ContentControl all'interno ControlTemplate di presentare tali proprietà all'interno del modello? Non sono sicuro se è legato alla tua ArgumentNullException, ma in genere il contenuto di un ContentControl è esposto sul modello tramite un ContentPresenter.

Dal momento che le deriva dal controllo ContentControl il ContentPresenter automaticamente Associazione delle proprietà ContentTemplate per voi contenuti e qualunque sia la proprietà Content è impostato. Si potrebbe anche manualmente legano la proprietà Content del ContentPresenter alla vostra proprietà ValidationContent.

Io non so perché si sta definendo una proprietà mainContent quando il ContentControl di base ti dà già una proprietà Content uso, forse questo è un secondo pezzo di contenuto che si sta cercando di esporre.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top