我正在创建一个自定义面板,该面板基本上只是一个更高级的StackPanel
,具有一些附加功能。我本打算使用包含UserControl
的{{1}},但是我不知道如何使StackPanel
接受内容来填充UserControl
。
这是我正在尝试的:
StackPanel
用法:
<UserControl
x:Class="transformations.fold_panel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:transformations"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<StackPanel Orientation="Vertical">
<Button Content="First" />
<ContentControl Content="{x:Bind Content, Mode=OneWay}"></ContentControl>
</StackPanel>
</UserControl>
尝试此操作时,出现以下错误:
<local:fold_panel>
<Button Content="Second" />
</local:fold_panel>
答案 0 :(得分:1)
您不能将Content
的{{1}}中StackPanel
的{{1}}绑定到同一{{1} }。这将引入一个循环引用。
在您的示例中,UserControl
Content
的{{1}}属性将设置为您在XAML标记中定义的Content
。
如果您希望能够在UserControl
中设置Content
的{{1}},则应在fold_panel
类中添加custom dependency property,然后将UserControl
的{{1}}属性绑定到此属性:
StackPanel
然后您可以设置自定义属性,如下所示:
Content
但是,如果您确实想要自定义ContentControl
,则应该创建一个继承自StackPanel
而不是fold_panel
的类。