【发布时间】:2017-06-20 02:48:54
【问题描述】:
我是 WPF 新手,我正在尝试创建一个包含一些嵌套内容的 UserControl。
<my:InformationBox Header="General Information" Width="280">
<StackPanel>
<Label>Label1</Label>
<Label>Label2</Label>
</StackPanel>
</my:InformationBox>
如您所见,我想将 StackPanel 放入其中。当我阅读一些文章时,我应该将 ContentPresenter 添加到我的 UserControl,所以我这样做了,但我找不到应该绑定到它的 Content 属性的内容。
这是我的用户控件代码
<UserControl x:Class="ITMAN.InformationBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="200" d:DesignWidth="280" Name="infoBox" Loaded="infoBox_Loaded">
<StackPanel Width="{Binding ElementName=infoBox, Path=Width}" HorizontalAlignment="Stretch">
<Label Content="{Binding ElementName=infoBox, Path=Header}" />
<Border BorderThickness="0,1,0,0" Padding="10 5" Margin="5 0 5 10" BorderBrush="#B4CEDE">
<StackPanel>
<ContentPresenter Content="{Binding Content}" />
<Label Content="End" />
</StackPanel>
</Border>
</StackPanel>
</UserControl>
我从各种文章中尝试了许多组合,但我找不到任何我想要实现的工作示例。
另一个用户早些时候提出了类似的问题,但给出的答案对我没有帮助:Does anyone have a simple example of a UserControl with a single ContentPresenter?
【问题讨论】:
-
据我所知,用户控件没有
Content属性。ContentPresenters 通常只在模板中使用。我认为您需要做的是创建一个具有依赖属性Content的自定义控件和一个设置控件的默认模板,就像您对用户控件所做的那样。 – 可以将 DP 添加到用户控件的类中;不过,您将不得不使用ContentControl。 -
是的,您需要将依赖属性添加到您的用户控件。看看这个codeproject.com/Articles/224230/…
-
@poke 用户控件是 ContentControl,因此 ContentPresenter 确实可用。
-
@dowhilefor 但是它不是一个内容控件,所以你可以用内容构造一个自定义的用户控件吗?生成的控件(您从中创建的控件)也是内容控件吗?
-
@poke 一个 UserControl 派生自 ContentControl。 xaml 部分是它的 ControlTemplate。因此,您可以构建根本不使用 Content 的 UserControl,但如果要使用它,则需要使用 ContentPresenter。
标签: c# wpf xaml contentpresenter