2010-10-23 19 views
5

bir grafik olarak ekranda gösterilir değer bir özelliği public MyClass MyProperty{...} olan bir kontrol. Bu özellik Binding sınıfını kullanarak programın başka MyClass için bağlanabilir olmak istiyorum (thisBinding yapıcı içinde propertyName parametre olacağını MyProperty ve diğer MyClassdataMember parametre olacaktır).WinForms'ta OneWay bağlanıyor mu?

MyClassINotifyPropertyChanged böylece yan her şeyi tamam olan uygular. Ancak get erişimcisini MyProperty uygulamasında uygulamıyor ve bir şeyleri bağlamayı denediğimde, "Hedef denetiminde 'MyProperty' özelliğine bağlanılamıyor. Parametre adı: PropertyName" hatası.

bu ben onun değer okumak gerekir asla bilmek bile bir get erişimci uygulamak sahip anlamına mı ve ben bir tek yönlü (hedef kaynak) bağlayıcı istiyorum ve bile ben sadece get içinde null dönmek erişimcisinin?

Ben Binding sınıfını tahmin ediyorum bu eskisine yeni bir değer karşılaştırmak veya başka bir iç şeyler yapmak için kullanır. Sadece null dönmek için iyi bir fikir mi bilmiyorum, o zaman, emin değilim, ya da hep set erişgeç ile atandı son hangi nesneyi bir kopyasını tutmak ve get erişgeç şekilde iade iyi olurdu. Belki de bir get erişimci yazmam gerekmiyor ve başka bir şey yanlış yapıyorum. Sadece ben sadece get accessor'u yorumladığımda ve geri koyduğumda onu almayı bıraktığımda hata alıyorum.

Düzenleme: durumda herhangi bir karışıklık vardır: Ben MyProperty 'ın değeri bir grafik olarak ekranda gösterilir derken bunu ekranında bir başka kod okur bu değeri ve gösterisi var anlamına gelmez. Hiç kimse MyProperty'dan herhangi bir değer okumaz. MyProperty 'ın set erişimci ekranda şeyler çizer biridir ve bu döngünün sonu.

+1

Lütfen paragrafları kullanmak için bunu yeniden biçimlendirin. –

+0

Ayrıca bir OneWayToSource bağlaması var. Sorunu çözüp çözemeyeceğini söylemek zor, çünkü her şeyi okuyamıyorum :) Örnek kodun bazı kısa kliplerini de ver. –

+0

Aslında paragrafları düşündüm ama nereye koyacağımı bilmiyorum. Onları bir yere koyacağım :). – Juan

cevap

6

değilim% 100 emin ne demek istediğini anlıyorum ama karşılaştığınız istisna (reflectored) Binding sınıfının CheckBinding işlevinden kaynaklanıyor düşünüyorum: Bağlama en ControlUpdateMode değişen nedenle

if (descriptor.IsReadOnly && (this.controlUpdateMode != ControlUpdateMode.Never)) 
{ 
    throw new ArgumentException(SR.GetString("ListBindingBindPropertyReadOnly", new object[] { this.propertyName }), "PropertyName"); 
} 

ControlUpdateMode.Never için aradığınızı bulamadınız

+0

Oh ... bu mantıklı. – Juan

İlgili konular