Родитель управления нулевой, когда помещается в ContentControl
-
29-09-2019 - |
Вопрос
У меня простой контроль, полученный из 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
Уже дает вам свойство контента для использования, возможно, это вторая часть контента, который вы пытаетесь разоблачить.