public PlayerControlViewModel(PlayersViewModel parent, Player player)
        {
            _parent = parent;
            _player = player;

            ViewModelHelper.BindNotifyChanged(_player, this,
                                              (sender, e) => RaisePropertyChanged(e.PropertyName));

            ViewModelHelper.BindNotifyChanged(_player.RecordDescription, this,
                                              (sender, e) => RaisePropertyChanged(e.PropertyName));


            // IsPlayingの状態が変わったら、PlayCommand/StopCommandの有効無効を切り替える
            Observable.FromEventPattern <PropertyChangedEventArgs>(_player, "PropertyChanged")
            .Where(e => e.EventArgs.PropertyName == "IsPlaying" || e.EventArgs.PropertyName == "IsPausing")
            .Subscribe(_ => {
                _PlayCommand.RaiseCanExecuteChanged();
                _PauseCommand.RaiseCanExecuteChanged();
                _StopCommand.RaiseCanExecuteChanged();
            });


            Observable.FromEventPattern <PropertyChangedEventArgs>(_player, "PropertyChanged")
            .Where(e => e.EventArgs.PropertyName == "IsAlive")
            .Subscribe(_ => _ReinitializeCommand.RaiseCanExecuteChanged());

            Observable.FromEventPattern <ErrorInfoEventArgs>(_player, "ErrorRaised")
            .Subscribe(e => Messenger.Raise(new InformationMessage(e.EventArgs.Message, "エラー", "ShowError")));
        }
        public NamingServiceViewModel(NamingService namingService)
        {
            _namingService = namingService;

            ViewModelHelper.BindNotifyChanged(
                _namingService, this, (sender, e) => RaisePropertyChanged(e.PropertyName));
        }