开发者

WPF: How to implement a generic window?

I'd like to have a reusable window in my desktop application that coul开发者_StackOverflowd potentially have different xamls "injected" into it. Because I'd like all my windows to have the same look (I have a nifty title bar and close button, etc)

For example, I'd like to have a messagebox (ok/cancel/string) used in it. I'd like it to be used to host a form, etc.

I currently have:

MyWindow.xaml/cs (is a Window)

MyMessageBox.xaml/cs (is a User Control)

MyForm.xaml/cs (is a User Control)

So what is the best way to implement this. Do I just put a ContentPresenter in MyWindow and then somehow "inject" the other xamls into it? Do I need the other controls to inherit something from the base window?

I'm just looking for some feedback on the best way to go about what I'm trying to do. Thanks


A simple approach would be a Window with a Frame, and then load pages into that Frame on demand.


I agree with with Henk Holterman's answer. I've just written a small 'framework' for WPF applications of this sort. I use an inteface on the 'content' pages to define common functionality for the code-behind; I have a generic page template that I use to give me a caption block, close button, etc.

I'd avoid visual inheritance with WPF unless you absolutely need it - it can be rather tricky to get right.


The DataWindow of Catel does exactly this. You can find the source code here:

DataWindow.cs


You should seriously consider using Prism (developed by Microsoft, coming out of the Patterns & Practices group) for this; it was built to handle exactly these scenarios, providing tools for composing UIs.


I ended up getting some tips and tricks from this article:

http://www.codeproject.com/KB/WPF/CustomFrames.aspx

it was exactly what i was looking for!


Is this what you are looking for?

http://jamescrisp.org/2008/05/26/wpf-control-inheritance-with-generics/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜