2014-09-17 3 views
-1

Я просто пытаюсь изменить логическое значение моего ObservableCollection под названием ActiviteCollection.Обратное логическое значение ObservableCollection

Это логическое значение, которое определяется как False (0), но когда я нажимаю на кнопку, некоторые логические значения становятся истинными. Это реверс, который мне не удается выполнить, и я не нашел ничего подобного в Интернете.

Заранее за вашу помощь.

Я могу Редактировать свой пост, если вы хотите какой-то код, но общий способ обращения к булеву ObservableCollection должен быть достаточным, чтобы помочь мне найти то, что я намереваюсь.

Это скрипт для кнопки, которая будет возмещена булеву:

private void click_PrisEnCompte(object sender, RoutedEventArgs e) 
{ 
    var viewModel = (ViewModel)(sender as System.Windows.Controls.ListBoxItem).DataContext; 

    foreach (var data in DonneesBrutes.SelectedItems) 
    { 
     if(viewModel.ActiviteCollection.Any(c => c.PMRQTOTMActivite == DonneesBrutes.CurrentItem.ToString())) 
     { 
      var reversedCollection = viewModel.ActiviteCollection.Select(t => !t); 
     } 
    } 
} 

Этот сценарий в настоящее время не работает, получил ошибку на Select: The type Arguments for method ... cannot be inferred for the usage. и т Cannot apply Operator ! to operand of type.....

+0

Если вы хотите, чтобы„обратный“ boolean, то просто отрицает это. 'var a = true;' a =! a; ' –

+0

Выберите (t =>! t) компиляции для меня ... Что такое ActiveCollection? Кроме того, похоже, что вы используете MVVM ... почему у вас есть то, что я предполагаю, это событие click в коде? посмотрите на команды. –

+0

Я действительно использую шаблон MVVM. ActiveCollection - это мой ObservableCollection 'public ObservableCollection ActiviteCollection {get; задавать; } '' ActiviteCollection = new ObservableCollection (_BDDInterneEntities.Activite); ' – Kraenys

ответ

2
foreach (var data in DonneesBrutes.SelectedItems) 
{ 
    foreach (var item in viewModel.ActiviteCollection.Where(c => c.PMRQTOTMActivite == DonneesBrutes.CurrentItem.ToString())) 
    { 
     item.MyBoolean = !item.MyBoolean; 
    } 
} 
+0

Хорошо звучит правильно. Это то, что я искал. Мне стоить дорого, потому что кажется, что я недостаточно точен или понятен, но спасибо за вашу помощь. – Kraenys

0
bool b = false; 
b = !b; //Inverted!! 

в Наблюдаемой коллекции

ObservableCollection<Bool> BooleanList; 
foreach(bool b in BooleanList) 
    b = !b; 
+1

может захотеть скомпилировать это –

+0

oops, забыли, что вы не можете редактировать во время перечисления. Но он был предназначен как более псевдо-код, чем акктуальный код. –

+0

* итерация не перечисление ... бог мне нужен обед. –

0

Следующая информация будет раскрыта РГП»каждый элемент в вашей коллекции:

var reversedCollection = from t in ActiviteCollection select !t;

+0

Если я это делаю: var varedCollection = viewModel.ActiviteCollection.Select (t =>! T); 'который является способом LinQ, у меня есть ошибка в Select. Я отредактирую свой вопрос с помощью моей кнопкиClickEvent – Kraenys

+0

Не уверен, что именно причина, но обходной путь указывает тип явно так: 'var reverseedCollection = from bool t в ActiviteCollection select! T;' – joym8

0

Если вы хотите, чтобы„обратный“булевый по данному индексу можно сделать:

ActiviteCollection[index] = !ActiviteCollection[index]; 
+0

Что вы подразумеваете под индексом? Логическое я хочу изменить? Если это так, у меня есть ошибка, когда я адаптирую ваш код: 'viewModel.ActiviteCollection [Flag] =! ViewModel.ActiviteCollection [Flag];', Не удается разрешить символ Flag. Флаг - это логическое значение, которое я хочу изменить – Kraenys

+0

, вам нужно знать, какой индекс в коллекции был выведен из булева. Т.е. вам нужно знать, что это, например, 2-е булевство в коллекции, и в этом случае вы используете ActiviteCollection [1] =! ActiviteCollection [1]; –

+0

никогда. Я предположил, что ActiviteCollection был ObservableCollection . –