2017-06-23 54 views
1

後面的代碼中創建的,我嘗試在後面的代碼中創建顯示的對象。對於某些屬性我用元素綁定,f.e:元素綁定如果兩個涉及對象都是在我的WPF項目中的

<GridViewColumn ... Width="{Binding ElementName=dummywidth1, Path=ActualWidth}" > 

在代碼中做到這一點的背後,我使用下面的代碼:

GridViewColumn column = new GridViewColumn(); 
Binding binding = new Binding("ActualWidth"); 
binding.ElementName = "dummywidth1"; 
BindingOperations.SetBinding(column, GridViewColumn.WidthProperty, binding); 

其中「dummywidth1」是使用的寬度的邊框。

如果邊框「dummywidth1」已經是.xaml文件的一部分,則可以很好地工作。如果我在後面的代碼中創建邊框,則寬度不應用於列。

Border border = new Border(); 
border.Name = "WidthHelper" + Grid_Sizer.ColumnDefinitions.Count; 
Grid_Sizer.Children.Add(border); 

並使用新的border.Name進行綁定。

binding.ElementName = border.Name; 

看來,元素綁定不能用剛纔創建的Border對象。顯示WPF時,在代碼後面創建的邊框具有所需的大小,但該大小不會傳輸到列。有沒有什麼辦法可以在後面的Code中創建兩個元素來實現元素綁定?

由於提前,
弗蘭克

+0

有沒有做WPF在一段時間,但我似乎想起了什麼關於動態元素名稱在視覺樹中沒有被立即識別而沒有某種中間步驟。 –

+0

@AlexPaven你可能是指名望範例,但這不是必要的。 – Clemens

回答

3

這將是更簡單的設置綁定的Source屬性,而不是ElementName

binding.Source = border; 
+0

在這裏,你很容易:D非常感謝你! – Aaginor