2009-07-16 2 views
2

Я нашел некоторые вопросы относительно этих вопросов, но они меня не удовлетворяют. Они говорят об INotifyProperyChanged, но это не помогает в моем случае.Как обновить привязку itemssource от combobox программно?

У меня есть Combobox. Для ItemsSource, я использую MultiBinding и Converter для создания ICollectionView. ICollectionView привязывается к ItemsSource.

На GotFocus -эвенте это обязательство необходимо обновить, поэтому конвертер снова будет запущен.

Как это сделать?

ответ

8

Хорошо, коллега помог мне.

Это решение:

private void theComboBox_OnGotFocus(object sender, RoutedEventArgs e) 
{ 
    ComboBox theComboBox = sender as ComboBox; 

    if (theComboBox != null) 
    { 
     MultiBindingExpression binding = BindingOperations.GetMultiBindingExpression(theComboBox, ComboBox.ItemsSourceProperty); 
     if (binding != null) 
     { 
      binding.UpdateTarget(); 
     } 
    } 
} 
+1

каждый раз я получаю привязку только как null ... Я уже дал itemsource ... –

+2

У меня был мой набор через ItemsSource, и просто установив его в null и обратно в исходную коллекцию, обновился без очевидные отрицательные побочные эффекты. –

+1

Вы можете попробовать использовать ['BindingOperations.GetBindingExpression'] (http://msdn.microsoft.com/en-us/library/system.windows.data.bindingoperations.getbindingexpression.aspx), если вы получаете значение null для привязки , – SliverNinja

0

Если вы можете получить доступ к ICollectionView в коде позади, вы можете попробовать метод Refresh ...

Надеется, что это помогает ..

+0

Это не поможет. Это обновляет ICollectionView, но ICollectionView необходимо воссоздать с помощью конвертера. Поэтому конвертер нужно будет переустановить. – Natrium

Смежные вопросы