Click here to Skip to main content
13,097,661 members (57,415 online)
Click here to Skip to main content
Add your own
alternative version


2 bookmarked
Posted 29 Dec 2009

WPF: Simple Bridge between a FrameworkElement and a FramworkContentElement

, 29 Dec 2009
Rate this:
Please Sign up or sign in to vote.
Q: Have you ever tried to embed a FramworkContentElement into a FrameworkElement inside a WPF template?Consider the following: This won't work! ...
Q: Have you ever tried to embed a FramworkContentElement into a FrameworkElement inside a WPF template?

Consider the following:

           This won't work!

I found this problem and solution in the April 2009 ed. of MSDN. The article is about 'Dynamic WPF' How to data bind in flow documents. The problem and solution in the article is how do you create a data bound list item which can be copied and pasted using the windows clipboard in a document? The solution to that goes beyond the topic of this tip and can be found at: Code for "Create Flexible UIs with Flow Documents And Data Binding"[^]. However I thought section on creating a 'bridge' between FrameworkElements and FrameworkContentElements was a good candidate for a short tip/trick on WPF.

You may ask your self why build a bridge when there are already bridges hosted in the .NET WPF framework such as: BlockUIContainer and TextBlock? Well if you need to do more then simple 'in lines' you will need something different other then what the frame work has to offer.

Here is the solution as it appears in MSDN for creating a bridge:

Figure 1 - Fragment Class

public class Fragment : FrameWorkElement
  private static readonly DependancyProperty ContentProperty =
  public FrameworkContnetElement Content
      return (FrameworkContentElement)GetValue(ContentProperty);
      SetValue(ContentProperty, value);

Now the folloing is possible:


Figure 1 is the bridge which is really just a wrapper for the FrameworkContnetElement. However a helper method is required when displaying the data in the content element. The helper really where the trick is implemented. There is a problem encountered when re displaying the data in the Framework Element. The problem is that when displaying the data an enumerator is created and this causes an exception to be thrown. "Collection Modified..."

Here is the workaround in the help class:

Figure 2 - Helper Method

public static FrameworkContentElement LoadDataTemplate(
                                      DataTemplate dataTemplate)
  object content = dataTemplate.LoadContent();
  if(content is Fragment)
  else if(content id TextBlock)
   InlineCollection inlines = ((TextBlock)content).Inlines;
   if(inlines.Count == 1
     return inlines.FirstInline;
     Paragraph paragraph = new Parageraph();
     while(inlines.FirstInline != null)
     return paragraph;
   throw new Exception("Data Template needs to contain a <Fragment> or <TextBlock>");


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

CEO AW Proto-Code, Inc.
United States United States
This member doesn't quite have enough reputation to be able to display their biography and homepage.
Group type: Organisation (No members)

You may also be interested in...

Comments and Discussions

-- There are no messages in this forum --
Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.170813.1 | Last Updated 29 Dec 2009
Article Copyright 2009 by Proto-Bytes
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid