2010-09-13 2 views
0

я следующая ситуация в C# Windows Forms (.NET 4.0) применение:Databinding для пользовательского элемента управления

У меня есть BindingSource, который DataSource установлен в коллекцию объектов пользовательского класса.

Большинство свойств этого класса может быть предоставлено с помощью текстового поля или флажка, так как они являются строками или цифрами. Однако есть одно свойство, называемое Ratings, которое является другим настраиваемым объектом и должно быть представлено настраиваемым элементом управления, который я разработал.

Я связал datagridview с источником bindings, и, очевидно, dgview правильно отображает числа, строки и bools. Но в той же форме у меня также есть экземпляр настраиваемого элемента управления, который я разработал, и поэтому хочу, чтобы я теперь хотел сделать привязку своего настраиваемого элемента управления к тому же связующему источнику, что и datagridview, и к определенному datamember под названием Ratings. Но я не имею ни малейшего понятия о том, как начать. Я подозреваю, что должен реализовать некоторый интерфейс, который реализует DataSource и DataMember, но не знаю, с чего начать. Таким образом, в основном, что я хочу, каждый раз, когда выбранный элемент изменяется с помощью выбора другой строки в datagridview, соответствующее свойство Ratings представлено в пользовательском элементе управления.

В настоящее время конечный результат, который я хочу достичь, работает, но я делаю это, обновляя свой настраиваемый элемент управления каждый раз, когда запускается событие OnSelectedRowChanged для datagridview и сопоставляет свойство Ratings выбранного элемента с настраиваемым элементом управления.

Но мне было интересно, могу ли я достичь этого чисто механизмом привязки данных в .NET.

Спасибо за любые ответы!

Матье

пс: для дальнейшего уточнения, как представляется, не так ясно в чистом тексте:

псевдопользователей-код, представляющий объект, который я использую в качестве источника данных для BindingSource является:

public class Car 
{ 

    private string number; 
    private string name; 
    ... 
    private Ratings ratings; 


    public string Number 
    { 
    get { return this.number; } 
    set { this.number = value; } 
    } 

    public string Name 
    { 
    get { return this.name; } 
    set { this.name = value; } 
    } 

    ... 

    public Ratings Ratings 
    { 
    get { return this.ratings; } 
    set { this.ratings = value; } 
    } 

} 

Так что я хочу, чтобы все свойства string и number из bindingsource связывались с datagridview, но мне нужно свойство Ratings для привязки к настраиваемому элементу управления.

ответ

1

Я понял, что вы хотели бы иметь специальный столбец в DataGridView с вашим настраиваемым элементом управления. Для этого вам необходимо создать подкласс DataGridViewCell и DataGridViewColumn и реализовать IDataGridViewEditingControl.

См. Например, MSDN.

+0

Нет, извините, если не было ясно. Это не специальный столбец в DataGridView, который я хочу. У меня есть совершенно отдельный пользовательский элемент управления, который я использую для представления свойства Ratings. Ничего общего с DataGridView. В основном я хочу, чтобы все свойства объекта привязывались к DataGridView (что сейчас имеет место), за исключением свойства Ratings, которое необходимо связать с пользовательским элементом управления. – tjeuten

+0

Я разместил код в своем вопросе, чтобы сделать его более ясным. – tjeuten

+0

Итак, у вас есть подробная форма, в которой вы хотите показать рейтинги, и хотите, чтобы текущий элемент сетки отображал свои оценки в этом настраиваемом элементе управления? – Timores

0

Вы можете прочитать эту статью Microsoft о interfaces related to data binding. Те, которые вас интересуют, находятся внизу в разделе «Интерфейсы для реализации по компонентам».