我有一个简单的控件派生自ContentControl
,有3个属性。
当我尝试使用放在MainContent
内的控件执行control.TransformToVisual()时出现问题。它总是会显示ArgumentNullException
。
我的猜测是由于控件具有null Parent属性。有没有一种简单的解决方法?
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);
<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>
答案 0 :(得分:-1)
您是否尝试在ControlTemplate中使用ContentPresenter
类而不是ContentControl
类来在模板中显示这些属性?我不确定它是否与您的ArgumentNullException相关,但通常ContentControl
的内容通过ContentPresenter
在模板上公开。
由于您的控件派生自ContentControl
,ContentPresenter
将自动将Content和ContentTemplate属性绑定到Content属性设置的任何内容。您还可以手动将ContentPresenter
的Content属性绑定到ValidationContent属性。
我不确定当基础ContentControl
已经为您提供要使用的Content属性时,为什么要定义MainContent属性,这可能是您尝试公开的第二部分内容。