2008-10-09 16 views
46

Bir TextBox'ta veri görüntülerken veri bağlama kullanmak istiyorum. Temel olarak şu gibi yapıyorum: Bağlamayı kaldırmak için bir yol bulamıyorum gibi görünüyor. Bu yöntemi birçok farklı nesne ile çağıracağım ama TextBox aynı kalacak. Önceki bağlamayı kaldırmanın bir yolu var mı yoksa yeni bağlamayı ayarladığımda bu otomatik olarak yapılır mı?WPF içinde bağlama kaldır kodu kullanarak

+0

Kabul edilen yanıtı değiştirebilir misiniz? –

cevap

32

zaman eski SilverLight sürümler için

BindingOperations.ClearBinding(txtName, TextBox.TextProperty) 

mevcuttur, ancak güvenilir değildir yorumlarda belirtildiği gibi:

txtName.SetBinding(TextBox.TextProperty, null); 
+0

Yeni bir bağlantı kurarken, önceki ciltlemenin kaldırıldığından şüpheleniyorum, çünkü nasıl yapılacağına dair herhangi bir bilgi bulamadım. Teşekkürler! –

+3

Bu işe yaramıyor. SetBinding aşırı yüklenmiştir ve arama, belirsiz olduğunda, null değeri ikinci bir parametre –

+2

@Simon olarak sağlandığında belirsizleşir, belirsizliği çözmek için her zaman boş değeri istediğiniz türüne atayabilirsiniz;) IE: (Binding) null –

17

ne dersiniz:

this.ClearValue(TextBox.TextProperty); 

Daha temiz Bence var;)

+3

Bu yöntemdeki belgeler çok açık değil. Sadece Bağlama Değil, Değeri temizleyecek gibi okur. Ama pratikte, bu çalışıyor gibi görünüyor. –

+5

BindingOperations.ClearBinding() bu yöntemi dahili olarak çağırır. –

86

Alternatif:

BindingOperations.ClearBinding(txtName, TextBox.TextProperty) 
+1

Visual Basic .SetBinding (..., Nothing) çağrısını çözmez çünkü her iki imza da Referans türlerini (bir String ve BindingBase) alır. Bunu daha iyi seviyorum. –

+4

ClearBinding yöntemi, Silverlight 3'te bulunmamaktadır. Http://stackoverflow.com/questions/1639219/clear-binding-in-silverlight-remove-data-binding-from-setbinding –

+0

@BobKing bunu ("Hiçbir şey") İstenilen tip. – ANeves

0

txtName.Text = txtName.Text; 

hemen Her halükarda temizledikten sonra değerini gerekir nasıl. Bu, en az SL4'te çalışır.