Click here to Skip to main content
15,397,517 members
Home / Discussions / WPF
   

WPF

 
GeneralRe: WPF DialogService Question Pin
Kevin Marois30-Dec-13 7:06
professionalKevin Marois30-Dec-13 7:06 
GeneralRe: WPF DialogService Question Pin
Ron Beyer30-Dec-13 7:22
professionalRon Beyer30-Dec-13 7:22 
GeneralRe: WPF DialogService Question Pin
Kevin Marois30-Dec-13 7:22
professionalKevin Marois30-Dec-13 7:22 
GeneralRe: WPF DialogService Question Pin
Kevin Marois30-Dec-13 7:35
professionalKevin Marois30-Dec-13 7:35 
GeneralRe: WPF DialogService Question Pin
Ron Beyer30-Dec-13 7:46
professionalRon Beyer30-Dec-13 7:46 
GeneralRe: WPF DialogService Question Pin
Kevin Marois30-Dec-13 7:53
professionalKevin Marois30-Dec-13 7:53 
GeneralRe: WPF DialogService Question Pin
Ron Beyer30-Dec-13 8:03
professionalRon Beyer30-Dec-13 8:03 
GeneralRe: WPF DialogService Question Pin
Kevin Marois30-Dec-13 8:08
professionalKevin Marois30-Dec-13 8:08 
OK, I see.. I like the design.

I just coded this:

Service
Same as before....
public static class DialogService
{
    private static Dictionary<Type, Type> registry = new Dictionary<Type, Type>();

    public static void RegisterDialog(Type dialogType, Type viewModelType)
    {
        if (!dialogType.IsSubclassOf(typeof(Window)))
        {
            throw new ArgumentException("The dialogType must be a subclass of type Window.");
        }

        bool exists = registry.Where(x => x.Key == dialogType).Any();

        if (!exists)
        {
            registry.Add(dialogType, viewModelType);
        }
    }

    public static bool? ShowDialog<TViewModelType>(TViewModelType viewModel) where TViewModelType : _DialogBaseViewModel
    {
        Type dialogType = registry.Where(x => x.Value == viewModel.GetType()).Select(x => x.Key).FirstOrDefault();
        var dialog = (Window)Activator.CreateInstance(dialogType);

        dialog.DataContext = viewModel;
        dialog.ShowDialog();

        return dialog.DialogResult.Value;
    }
}


DialogManager
A wrapper class to the Sertvice:
public static class DialogManager
{
    static DialogManager()
    {
        // Register all dialogs here
        DialogService.RegisterDialog(typeof(SQLConnectionView), typeof(SQLConnectionViewModel));
    }

    public static string OpenSQLConnectionDialog()
    {
        string result = string.Empty;

        SQLConnectionViewModel vm = new SQLConnectionViewModel();

        bool? dialogResult = DialogService.ShowDialog(vm);

        if (dialogResult.Value)
        {
            result = vm.ConnectionString;
        }

        return result;
    }
}


Usage
var connString = DialogManager.OpenSQLConnectionDialog();


By doing it with the wrapper, I can return a value, or the whole VM if I want.

Drawback is that I'd have to specified methods for each dialog I want to open, and possibly more if I wanted different return values;
If it's not broken, fix it until it is

GeneralRe: WPF DialogService Question Pin
Kevin Marois30-Dec-13 8:45
professionalKevin Marois30-Dec-13 8:45 
GeneralRe: WPF DialogService Question Pin
Ron Beyer30-Dec-13 8:54
professionalRon Beyer30-Dec-13 8:54 
GeneralRe: WPF DialogService Question Pin
Kevin Marois30-Dec-13 9:18
professionalKevin Marois30-Dec-13 9:18 
GeneralRe: WPF DialogService Question Pin
Ron Beyer30-Dec-13 10:25
professionalRon Beyer30-Dec-13 10:25 
GeneralRe: WPF DialogService Question Pin
Kevin Marois30-Dec-13 10:28
professionalKevin Marois30-Dec-13 10:28 
GeneralRe: WPF DialogService Question Pin
Kevin Marois31-Dec-13 5:54
professionalKevin Marois31-Dec-13 5:54 
GeneralRe: WPF DialogService Question Pin
Ron Beyer31-Dec-13 6:09
professionalRon Beyer31-Dec-13 6:09 
GeneralRe: WPF DialogService Question Pin
Mycroft Holmes6-Jan-14 21:57
professionalMycroft Holmes6-Jan-14 21:57 
QuestionConvert BitmapImage into byte arrays in wpf Pin
Member 1001614027-Dec-13 0:23
MemberMember 1001614027-Dec-13 0:23 
AnswerRe: Convert BitmapImage into byte arrays in wpf Pin
Pete O'Hanlon27-Dec-13 0:58
mvaPete O'Hanlon27-Dec-13 0:58 
GeneralRe: Convert BitmapImage into byte arrays in wpf Pin
Member 1001614027-Dec-13 3:44
MemberMember 1001614027-Dec-13 3:44 
QuestionWPF App Content Presenter in Main Window Pin
Kevin Marois23-Dec-13 7:21
professionalKevin Marois23-Dec-13 7:21 
AnswerRe: WPF App Content Presenter in Main Window Pin
SledgeHammer0123-Dec-13 10:22
MemberSledgeHammer0123-Dec-13 10:22 
GeneralRe: WPF App Content Presenter in Main Window Pin
Kevin Marois3-Jan-14 10:29
professionalKevin Marois3-Jan-14 10:29 
QuestionHow to add certificate in Local Machine Pin
Sugu.s19-Dec-13 22:50
MemberSugu.s19-Dec-13 22:50 
QuestionWPF user control not working Pin
sridhar chanti18-Dec-13 2:33
Membersridhar chanti18-Dec-13 2:33 
SuggestionRe: WPF user control not working Pin
Matt T Heffron18-Dec-13 7:38
professionalMatt T Heffron18-Dec-13 7:38 

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.