如何在用户控件内部填充StackPanel?

时间:2019-06-10 08:36:00

标签: xaml uwp

我正在创建一个自定义面板,该面板基本上只是一个更高级的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>

1 个答案:

答案 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的类。