2011-05-11 124 views
0

我試圖將Canvas的Width屬性綁定到Shape實例的Width屬性。因此,當Canvas Width獲得新值時,應更新形狀寬度寬度屬性的WPF數據綁定

我想在代碼中執行此操作,而不使用XAML,因爲我在運行時創建了這些元素。

我想這一點,但它沒有工作(代碼是我的畫布內):

Binding binding = new Binding(); 
binding.Mode = BindingMode.OneTime; 
binding.Source = this; 
binding.Path = new PropertyPath("Width"); 
shape.SetBinding(FrameworkElement.WidthProperty, binding); 

非常感謝您的幫助!

ksman

+0

運行時,你能檢查輸出窗口的數據綁定失敗嗎? –

回答

2

OneTime看起來不對。我想你想用OneWayTwoWay。檢查the BindingModes

編輯

由於OneWayActualWidth沒有解決您的問題,我建議你在調試時使用綁定的工具。我使用Snoop,因爲它是免費的,但也有其他的。無需像這樣的工具來調試WPF可能會很痛苦。

1

您可能想綁定到ActualWidth而不是Width

Width是一個輸入進入佈局過程 - 這是你可能(但不必)指定的東西。

ActualWidth輸出的佈局過程 - 它是您在屏幕上看到的實際寬度。這部分取決於Width(如果存在),但也會考慮其他因素(尤其是如果您未在XAML中明確設置Width)。

+0

我將PropertyPath更改爲「ActualWidth」,將模式更改爲「OneWay」。但它仍然不起作用:-( – ksman