Cosmos/source/Cosmos.Build.Builder/ViewModels/VisualStudioInstanceDialogViewModel.cs
2018-12-06 00:39:52 +00:00

53 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Input;
using Cosmos.Build.Builder.Models;
using Cosmos.Build.Builder.Services;
namespace Cosmos.Build.Builder.ViewModels
{
internal sealed class VisualStudioInstanceDialogViewModel : ViewModelBase
{
public IEnumerable<VisualStudioInstance> VisualStudioInstances { get; }
public VisualStudioInstance SelectedVisualStudioInstance
{
get => _selectedVisualStudioInstance;
set => SetAndRaiseIfChanged(ref _selectedVisualStudioInstance, value);
}
public ICommand OkCommand { get; }
public ICommand CancelCommand { get; }
private readonly IVisualStudioService _visualStudioService;
private VisualStudioInstance _selectedVisualStudioInstance;
public VisualStudioInstanceDialogViewModel(IVisualStudioService visualStudioService)
{
_visualStudioService = visualStudioService;
VisualStudioInstances = _visualStudioService.GetInstances().Select(i => new VisualStudioInstance(i)).ToList();
SelectedVisualStudioInstance = VisualStudioInstances.FirstOrDefault();
OkCommand = new RelayCommand(p => Close(p as Window, true));
CancelCommand = new RelayCommand(p => Close(p as Window, false));
}
private static void Close(Window window, bool? dialogResult)
{
#if DEBUG
if (window == null)
{
throw new ArgumentNullException(nameof(window));
}
#endif
window.DialogResult = dialogResult;
window.Close();
}
}
}