Родитель управления нулевой, когда помещается в ContentControl

StackOverflow https://stackoverflow.com/questions/3092864

Вопрос

У меня простой контроль, полученный из ContentControl с 3 свойствами.

Моя проблема возникает, когда я пытаюсь выполнить Control.transformtovisual () с управлением, который находится внутри MainContent. Анкет Это всегда вызывает ArgumentNullException.

Я предполагаю, что это из -за контроля, имеющего ноль родительское свойство. Есть ли простой способ обойти это?

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>

Нет правильного решения

Другие советы

Вы пытались использовать ContentPresenter класс вместо ContentControl Класс в вашем контроле, чтобы представить эти свойства в шаблоне? Я не уверен, связано ли это с вашим аргументом, но обычно содержание ContentControl выставлен на шаблоне через ContentPresenter.

Так как ваш контроль получает от ContentControl а ContentPresenter будет автоматически связывать свойства контента и ContentTemplate для вас с тем, на что установлено свойство контента. Вы также можете вручную связать свойство контента ContentPresenter к вашим свойству валидации.

Я не уверен, почему вы определяете свойство MainContent, когда база ContentControl Уже дает вам свойство контента для использования, возможно, это вторая часть контента, который вы пытаетесь разоблачить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top