2016-04-04 15 views
2

Kod arkasında bir veri bağlama ayarlamaya çalışıyorum ama çalışmak istemiyorum.Kodlama arkasındaki Veri Bağlama çalışmayı reddetti

böyle XAML yaptığımda:

<Label x:Name="lblSelectedItem" Margin="0,0,5,5" DockPanel.Dock="Left" Content="{Binding (Canvas.Left),ElementName=Ming}"></Label> 

Mükemmel çalışıyor ama ben böyle yaptığımda:

var X1Binding = new Binding("Canvas.Left") { ElementName="Ming"}; 
BindingOperations.SetBinding(lblSelectedItem, ContentProperty, X1Binding); 

Herhangi bir değere almaz.

Bunu nasıl düzgün yaparım?

cevap

1

parantez kullanarak:

var X1Binding = new Binding("(Canvas.Left)") { ElementName = "Rect" }; 
BindingOperations.SetBinding(Lbl1, Label.ContentProperty, X1Binding); 
+0

Çok teşekkür ederim: -) – FLeX

0

Birkaç Binding özellik değeri belirtmeniz gerekir. Aşağıdaki gibi bağlayıcı ve propertyPath ayarı

var X1Binding = new Binding("Canvas.Left") { ElementName="Ming"}; 
//X1Binding.Source = ViewModel; // Well the canvas is not on the view model so default value is the datacontext of the view. 
X1Binding.Mode = BindingMode.TwoWay; 
X1Binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; 
BindingOperations.SetBinding(lblSelectedItem, ContentProperty, X1Binding); 
+0

A 'Content' bağlayıcı tek tek yönlüdür (kaynaktan hedef). 'BindingMode.TwoWay' ve' UpdateSourceTrigger.PropertyChanged' belirtme burada herhangi bir anlam ifade etmiyor. – Clemens

0

Dene: Böyle Canvas.Left etrafında

Binding binding = new Binding(); 
binding.ElementName = "Ming"; 
binding.Path = new PropertyPath(Canvas.LeftProperty); 
lblSelectedItem.SetBinding(ContentControl.ContentProperty, binding);