C#, как реализовать привязку данных свободно?

Существует ли простой способ реализовать привязку данных, когда ни один из обоих классов не имеет Управления типом?

В моем случае я хотел бы связать переменную со свойством пользовательского ToolStripButton.

РЕДАКТИРОВАНИЕ для разъяснения: при привязке с Управлением я могу использовать набор DataBindings Управления. Однако я ищу способ связать свойства независимо от входного и выходного Типа.

Править: использование winforms

7
задан peter p 4 January 2010 в 21:06
поделиться

4 ответа

Вероятно, это можно сделать с помощью Truss.

Truss предоставляет базу данных в стиле WPF для любого класса, реализующего INotifyPropertyChanged. Это дает немного больше гибкости, т.к. не ограничивает классы производными от определенного базового класса.

.
8
ответ дан 6 December 2019 в 14:04
поделиться

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

Я думаю, что это самый простой способ сделать это.

EDIT: Это только для WPF...

Else implementation INotifyPropertyChanged и когда ваша переменная изменяется, она должна автоматически изменяться в ToolStripButton.

1
ответ дан 6 December 2019 в 14:04
поделиться

Для схожего поведения, такого как привязка элементов управления к свойствам объекта, для любого типа вы можете реализовать одинаковые интерфейсы.

Основываясь на этой мысли, вы можете использовать подкласс ToolStripButton ( или желаемый тип для привязки) и реализовать для него IBindableComponent. Это работает для всех видов исходных и целевых типов до тех пор, пока они не запечатаны. Например, ваша кнопка зачистки инструмента:

public class BindableToolStripButton : ToolStripButton,  IBindableComponent {
    //...

Это приведет к тому, что BindableToolStripButton будет иметь собственное свойство .DataBindings, в то время как базовый класс ToolStripButton не имеет такого свойства.

Вам необходимо будет проследить за деталями реализации, используя примеры, рассмотренные здесь от Microsoft для ISite, IBindableComponent, IComponent и любых унаследованных интерфейсов.

Тогда вы добавите Привязывающие экземпляры к любому экземпляру BindableToolStripButton.

(Примечание: у меня есть только фрагменты, поэтому я сделаю свой первый пост в вики-сообществе - и посмотрим, как это пойдет... )

1
ответ дан 6 December 2019 в 14:04
поделиться

Я написал некоторые базовые вещи для базы данных через отражение. Она работает на любом объекте и не нуждается в реализации чего-то особенного (нет INotifyPropertyChanged, она просто работает), она часть моего редактора на http://github.com/filipkunc/opengl-editor-cocoa смотрите HotChocolate/Bindings (как повторная реализация Cocoa KVC, KVO в .NET) папку. Вы можете увидеть это в действии в проекте HotChocolateTest.

.
0
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: