Click here to Skip to main content
15,904,822 members
Articles / Desktop Programming / WPF
Article

WPF ProcessingContentControl

Rate me:
Please Sign up or sign in to vote.
3.42/5 (8 votes)
5 Feb 2008CPOL 52.7K   834   39   5
A ContentControl that displays continuously progressing view when its content is being processed.
ProcessingContentControl_demo

Introduction

Sometimes you want to provide feedback to the user while the data displayed inside a certain control is loaded / processed, updated, etc. An obvious example is media player. ProcessingContentControl lets you achieve this goal.

Using the Code

Host any element inside ProcessingContentControl. Set IsContentProcessing property to toggle processing mode. When the property is set to true, an overlay layer will appear, blocking interaction with the hosted element. The overlay layer displays animated progress view, as shown in the picture above.

Usage Example

XML
<process:ProcessingContentControl IsContentProcessing="True" >
    <... your content here>
</process:ProcessingContentControl> 

History

  • 5th February, 2008: Bug fixes
  • 26th January, 2008: Initial release

License

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


Written By
Software Developer
Israel Israel
Experienced in .Net, C#, WPF, user experience.

Read my blog: http://uxoriented.blogspot.com/

Comments and Discussions

 
GeneralCouple of issues Pin
Andrew Wood4-Feb-08 10:31
Andrew Wood4-Feb-08 10:31 
Hi,

Firstly, I really want to use this control in an application, that it is a very concise example impressed me.

Came across a couple of issues that are raised though:

1) If you have two ProcessingContentControls, and the IsContentProcessing property is set at different times (eg. you enable a second one when the first is half way through a loop), you get this strange overlay effect (like both controls are overlaid on each instance). This indicated that something was being shared somewhere, took a while to find it though. Turns out it's the brush in the resource dictionary, and the issue met is the one described here[^]. An alternative is to sync up the animations, but it seems nice to have them able to be independent but sharing resources.

Solution is to have a different brush for each of the dot elements, not sure of the best way though (quick fix is to create a new brush in the timer callback, but not ideal).

2) The other problem I found is that with the current implementation I could not add named controls as content (using x:Name), the cause is that this control already has a name defined in xaml (the PART_ name on the contentpresenter). The workaround for this is to make sure that this control is only defined in code-behind, not in xaml (as described here[^]). Fortunately in this situation it's easy, just remove the ProcessContentControl xaml file and the partial header from the code-behind.

Hope that all makes sense, and once again thank you for your work on this implementation, I look forward to any updates you make.

Andrew.
GeneralRe: Couple of issues Pin
Yaakov Davis5-Feb-08 7:11
Yaakov Davis5-Feb-08 7:11 
GeneralRe: Couple of issues Pin
Andrew Wood5-Feb-08 11:34
Andrew Wood5-Feb-08 11:34 
QuestionNice article! [modified] Pin
Andrew Wood28-Jan-08 11:27
Andrew Wood28-Jan-08 11:27 
GeneralRe: Nice article! Pin
yaakov`29-Jan-08 1:27
yaakov`29-Jan-08 1:27 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.