9
votes

I'm using Microsoft.Win32.OpenFileDialog in my WPF application for selecting file:

var dlg = new Microsoft.Win32.OpenFileDialog
{
    Title = "Select configuration",
    DefaultExt = ".xml",
    Filter = "XML-file (.xml)|*.xml",
    CheckFileExists = true
};

if (dlg.ShowDialog() == true)
{
//...
}

According to MSDN screenshots on Windows 7 dialog must have modern style, but I'm getting the old one:

enter image description here

Adding manifest like in this question doesn't works. How to get dialogs like in MSDN shown?

EDIT:

First of all, I'm interested in "native" solution, not using third-party components.

1
I know the comment "works on my machine" isn't usually helpful, but I pasted your code into a newly created project on my Windows 7 box. The correct dialog is displayed. Is there anything unusual about your machine settings? - Cameron Peters
@Cameron Peters, Windows 7 x64. WPF project for .Net Framework 3.5. What application have you created (for .Net 3.5 or 4.0)? - Kyrylo M
Windows 7 Ultimate, 32 bit. WPF project for .Net Framework 4.0. - Cameron Peters
when I switch the target to .Net 3.5, I get the old style dialog. Are you able to target 4.0, or are you required to stick with 3.5? - Cameron Peters
@Cameron Peters, I can switch. Probably with .NET 4.0 OpenFileDialog executes new code with modern dialogs. Thanks for helping. Add this to your answer, I will mark it. - Kyrylo M

1 Answers

5
votes

You will get the correct dialog if you switch your target to the .Net 4.0 full or client profile.

Some of the modern common dialogs are only available in WPF if you use the Windows 7 Code Pack, but the new style open dialog is available when you target .Net 4.0.