Нужен ли мне BindingSource И BindingList для WinForms DataBinding?

Я хочу отобразить список людей в DataGridView в приложении Windows Forms. Я хочу, чтобы мой уровень обслуживания возвращал список объектов Person (например, IList ). Я хочу, чтобы изменения в списке отражались в DataGridView и наоборот. Насколько я понимаю, использование BindingSource облегчает работу с DataGridView . Мой вопрос заключается в том, чтобы двусторонняя привязка данных работала, мне нужно:

//pseudo code
BindingSource.DataSource = IBindingList

или я могу сделать:

BindingSource.DataSource = IList

В чем разница? Если я внесу изменения в список, будет ли обновляться DataGridView в любом случае? И если мне нужно использовать BindingList , http://msdn.microsoft.com/en-us/library/ms132679.aspx :

«Однако типичные решения программист будет использовать класс, который обеспечивает функциональность привязки данных, например BindingSource вместо не хочу этого.

Кнопки вызывают следующие функции:

//  This displays the overlay (popup)
function showCategoryPopup() {

 // Was playing with the following, but with no success.
 //  popupCategory.style.display = "block";
 //  popupCategory.style.visibility = "visible";

 // Change the attributes that will be animated.
 popupCategory.style.opacity = 1; 
 popupCategory.style.webkitTransform = "scale(1.0)";
}

function hideCategoryPopup() {
 // Change the animated attributes
 popupCategory.style.opacity = 0; 
 popupCategory.style.webkitTransform = "scale(0.7)"; 


// Even if opacity is 0, we still get mouse events.  So, make it hidden?
//    popupCategory.style.visibility = "hidden";
//    popupCategory.style.display = "none";     

}

Класс CSS для наложения следующий:

.popupContainer {
    opacity: 0;
    -webkit-transform: scale(0.7);
    -webkit-transition-duration: 0.3s;
    -webkit-transition-timing-function: ease-in-out;
    -webkit-transition-delay: initial;
}

Если я вообще не использую параметры видимости или отображения, анимация в порядке, но События mouseClick запускаются для невидимых элементов.

Если я использую блоки, он включается / выключается без анимации.

Если я использую стиль отображения, он вроде работает, но вместо того, чтобы сразу отображать анимацию, он запускается только один раз, когда какое-то другое событие на странице запускается, как и другая кнопка в другом месте страницы.

Я подумал, может быть, добавить «указатель-события: нет» к стилю, используемому всплывающим div после его скрытия, но то, что я спрашиваю for кажется чем-то, с чем вы часто сталкиваетесь с непрозрачностью, так что это должна быть нечастая проблема.

Мысли?

11
задан Woodster 13 January 2011 в 01:27
поделиться