Search code examples
silverlight-4.0expression-blend

Access a nested UserControl's ContentPresenter with Blend


I've created a simple UserControl in Blend which contains (amongst other things) a ContentPresenter.

I'd like to be able to drop this UserControl onto another UserControl and then add other controls into its ContentPresenter, but when I include it in the second UserControl I can't see a way to do this.

Using Blend, how do I expose the underlying ContentPresenter so that its contents can be set visually (ie: so they appear as child controls in the Objects and Timeline window)?


Solution

  • If it’s a content control, to add child controls you set them as the content of the control

    <MyContentControl>
        <Grid x:Name=”ImAChild”>
        </Grid>
    </MyContentControl>
    

    Edit: now that I think about it you might need to do something to make the Content property the default property which is populated by the inner xaml of your control, I can't remember exactly what it was but if your xaml looks like this (below) it doesn't matter anyway

    <MyContentControl>
        <MyContentControl.Content>
            <Grid x:Name=”ImAChild”>
            </Grid>
        </MyContentControl.Content>
    </MyContentControl>
    

    Edit2 Your MyUserControl would need a MyContent property of type object and it'd have to somehow display the value of that property. You might be able to create it in the setter of the MyContent property but it seems "hacky"

    <MyUserControl>
        <MyUserControl.MyContent>
            <Grid x:Name=”ImAChild”>
            </Grid>
        </MyContentControl.MyContent>
    </MyUserControl>