ContentPresenter in UserControl
c#, contentpresenter, wpf, xaml
Solution
I solved this problem by applaying custom style to `GroupBox`. I've created Syle in `ResourceDictionary`, which looks as follows
<Style x:Key="InformationBoxStyle" TargetType="GroupBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupBox">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label>
<ContentPresenter Margin="4" ContentSource="Header"
RecognizesAccessKey="True" />
</Label>
<Border Grid.Row="1" BorderThickness="0,1,0,0" Padding="10 5"
Margin="5 0 5 10" BorderBrush="#B4CEDE">
<StackPanel>
<ContentPresenter />
</StackPanel>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
And applied this style to `GroupBox`
<GroupBox Header="General Information" Width="280" Style="{StaticResource InformationBoxStyle}">
<StackPanel>
<Label>Label1</Label>
<Label>Label2</Label>
</StackPanel>
</GroupBox>
This code works as expected
You may also refer to this great article, which shows different options to achieve it: http://www.codeproject.com/Articles/82464/How-to-Embed-Arbitrary-Content-in-a-WPF-Control It also describes why `ContentPresenter` doesn't work in my code.
Problem
I'm new to WPF and I'm trying to create an UserControl which will have some nested content. ``` <my:InformationBox Header="General Information" Width="280"> <StackPanel> <Label>Label1</Label> <Label>Label2</Label> </StackPanel> </my:InformationBox> ``` As you can see I want to put a StackPanel into it. As I read some articles I am supposed to add ContentPresenter to my UserControl, so I did, but I cannot find what should be binded to it's Content property. Here is my UserControl code ``` <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> ``` I've tried many combinations from various articles, but I cannot find any working example of what I want to achieve. Similiar question was asked earlier by another user, but given there answers didn't help me: Does anyone have a simple example of a UserControl with a single ContentPresenter?