public ColumnConfigurationViewModel(string configurationName, ObservableCollection <FieldMapperGridColumn> columns) : base(typeof(ColumnConfigurationViewModel)) { ConfigurationName = configurationName; Columns = columns; _selectedColumns = new FilteredReadOnlyObservableCollection <FieldMapperGridColumn>(columns, (x) => x.Visible); _availableColumns = new FilteredReadOnlyObservableCollection <FieldMapperGridColumn>(columns, (x) => !x.Visible); ShowColumnCommand = new RelayCommand((o) => ShowColumn(), (o) => SelectedInvisibleColumn != null); HideColumnCommand = new RelayCommand((o) => HideColumn(), (o) => SelectedVisibleColumn != null); OKCommand = new RelayCommand((o) => OK()); MoveSelectedUpCommand = new RelayCommand((o) => MoveSelectedUp(), (o) => SelectedVisibleColumn != null && SelectedVisibleColumn != SelectedColumns.FirstOrDefault()); MoveSelectedDownCommand = new RelayCommand((o) => MoveSelectedDown(), (o) => SelectedVisibleColumn != null && SelectedVisibleColumn != SelectedColumns.LastOrDefault()); MoveAvailableUpCommand = new RelayCommand((o) => MoveAvailableUp(), (o) => SelectedInvisibleColumn != null && SelectedInvisibleColumn != AvailableColumns.FirstOrDefault()); MoveAvailableDownCommand = new RelayCommand((o) => MoveAvailableDown(), (o) => SelectedInvisibleColumn != null && SelectedInvisibleColumn != AvailableColumns.LastOrDefault()); }