У меня есть этот комбо, связанный с таблицей linq.
Существует ли упрощенный способ обновления пользовательского интерфейса (комбинированные значения, отображаемые пользователю), когда я вставляю новую запись в таблицу linq?
В основном из того, что я понимаю, я должен был использовать ObservableCollection, но я не хочу копировать данные туда и обратно из таблицы linq в эту коллекцию, я только хочу иметь данные в таблице linq.
Это возможно?
EDIT
ОК. Вот что я сделал (и все же это не работает):
private ObservableCollection<Categories> m_Categories;
private ObservableCollection<Categories> Categories
{
get
{
return m_Categories;
}
}
в XAML у меня есть:
<ComboBox Name="cmbCategory"
ItemsSource="{Binding Categories}"
DisplayMemberPath="Name"
SelectedValuePath="Id"
/>
Итак, довольно просто.
//if i have a new category, i want to update the combo's content
if (frmEditCategory.ShowDialog() == true)
{
//get the new category and add it to the ObservableCollection
LibraryDataStore.Instance.Categories.ToList().ForEach(p =>
{
if (!m_Categories.Contains(p))
{
m_Categories.Add(p);
}
});
//update the target? is this correct?!
BindingExpression be = cmbCategory.GetBindingExpression(ComboBox.ItemsSourceProperty);
if (be != null)
be.UpdateTarget();
}
Проверено с помощью отладчика, m_Categories содержит новую категорию, но она не отображается в комбо.
Кроме того, знаете ли вы хороший учебник или пост в блоге о комбо-связывании? ...
Заранее спасибо