我从Gruopbox创建了一个自定义用户控件。但是,为了在视图中用作容器,我必须为DependecyProperty
创建一个Content
。这会导致VS2017中出现Unhandled Exception has occurred
错误。
但是,仅当我将gruopbox中的Content
属性绑定到我的新媒体资源时,这种情况才会发生。
<UserControl
x:Class="Infrastructure.Controls.GroupBox.CollectionBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="Form"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<GroupBox Content="{Binding Content, ElementName=Form}"/>
</UserControl>
代码在后面
public new object Content
{
get => (object)GetValue(ContentProperty);
set => SetValue(ContentProperty, value);
}
public new static readonly DependencyProperty ContentProperty = DependencyProperty.Register(nameof(Content), typeof(object), typeof(CollectionBox), new PropertyMetadata(null));
我尝试在绑定到其他控件中使用FalloutValue
,因为我认为设计人员不知道要在容器中放入什么。但是,错误不断发生。
在运行时和视图设计器中,控件外观和工作正常。我只是看不到它的设计师。
谢谢。
答案 0 :(得分:1)
您不需要另一个Content属性,只需另一个ControlTemplate即可定义控件的视觉结构,包括绑定到控件Content
的GroupBox:
<UserControl x:Class="Infrastructure.Controls.GroupBox.CollectionBox" ...>
<UserControl.Template>
<ControlTemplate TargetType="UserControl">
<Border> <!-- or any other control(s) here -->
<GroupBox Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</UserControl.Template>
</UserControl>