3

3 つのプロパティから派生した単純なコントロールがありContentControlます。

私の問題は、内部に配置されたコントロールで control.TransformToVisual() を実行しようとすると発生しますMainContent。常にArgumentNullException.

これは、コントロールに null の Parent プロパティがあるためだと思います。これを回避する簡単な方法はありますか?

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>
4

1 に答える 1

-2

ControlTemplate 内ContentPresenterのクラスの代わりにクラスを使用して、これらのプロパティをテンプレート内に表示しようとしましたか? ContentControlArgumentNullException に関連しているかどうかはわかりませんが、通常、 のコンテンツContentControlContentPresenter.

ContentControlコントロールはwillから派生ContentPresenterするため、 Content プロパティが設定されているものに Content プロパティと ContentTemplate プロパティを自動的にバインドします。ContentPresenterの Content プロパティをValidationContent プロパティに手動でバインドすることもできます。

ベースが使用する Content プロパティを既に提供しているのに、MainContent プロパティを定義している理由がわかりContentControlません。おそらく、それは公開しようとしているコンテンツの 2 番目の部分です。

于 2010-06-22T17:39:10.050 に答える