Привязка (сложного) свойства класса к CF.NET в C # - PullRequest
1 голос
/ 22 августа 2010

Я пытаюсь сделать двустороннюю привязку свойства класса.

public class MyClass{
public MyField AField1{get;set;};
public MyField AField2{get;set;};
}

public class MyField{
public string Value {get; set}
}

MyClass _class = MyClass();
_dv.DataSource = _class;

Текстовый объект привязки данных отображает MyField имя класса вместо Значение Свойство,Я также пытался ввести:

DataMember = "AField1.Value";

Есть ли способ привязать (2-way) AField1.Value класса MyClass к визуальному элементу управления?

1 Ответ

0 голосов
/ 08 марта 2012

Это боль. В .NET нет встроенного способа добиться этого, поэтому я могу с уверенностью сказать, что еще меньше в CF.

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

Лично я закончил тем, что написал собственный BindingSource, основанный на коде, который находится где-то в интернете. Я не могу дать вам исходный код моего переписывания, так как это собственность моего работодателя, но вот ссылка на проект, с которого я начал.

У предоставленного кода есть несколько недостатков: некоторые из его пространств имен - System.ComponentModel, и VS2010, похоже, не понравился, поэтому мне пришлось их переименовать. И еще несколько проблем во время разработки, из-за которых может быть неудобно использовать (так что вы тоже захотите это исправить), например, потеря списка свойств, когда вы допустили орфографическую ошибку, и так далее ...

Но это лучший способ (IMHO) создать хороший BindingSource, который обрабатывает вложенные объекты, и вы получите представление о том, что необходимо сделать для достижения ваших вложенных привязок.

Последний недостаток (и, вероятно, самый большой, но у меня нет опыта работы с CF) заключается в том, что проект написан для обычной платформы .NET Framework, поэтому, скорее всего, вам придется полностью его переписать.

Надеюсь, это поможет ....

Edit. О, я копал могилы, не замечая ... извините.

PS. Другая идея состоит в том, чтобы просто создать один источник привязки для каждого из ваших вложенных объектов, но он становится беспорядочным (IMO), если иерархия объектов сложна.

...