2016-09-19 23 views
0

我有一個使用畫布作爲其主UI的WPF應用程序。自定義控件在運行時動態添加到Canvas。我如何在運行時將這些自定義控件絕對放置在Canvas中?使用XAML,它很直接:在畫布中定位自定義控件

<Label Name="myCoolLabel" 
     Content="My Name" 
     Width="200" 
     Height="100" 
     Canvas.Left="{Binding MyLabelX, Mode=OneWay}" 
     Canvas.Top="{Binding MyLabelY, Mode=OneWay}" /> 

Canvas屬性允許我通過Binding設置位置。如果我沒有使用Binding,我甚至可以設置它。但Canvas屬性不能通過代碼獲得。

我已經考慮通過XAML添加這些控件,並且默認情況下使它們不可見,然後通過綁定在運行時設置它們的位置並使它們可見,但由於幾個原因,這是不切實際的,其中一個原因是可能有幾個動態控制或幾十個。

是否有某種方法來設置在運行時添加的控件的絕對位置?它甚至有可能嗎?

回答

1

通過靜態設置方法設置子控件的Canvas.TopCanvas.Leftattached properties

Canvas.SetLeft(myCoolLabel, 100); 
Canvas.SetTop(myCoolLabel, 200); 

然後通過

canvas.Children.Add(myCoolLabel); 

其中canvas是Canvas控件的名稱控件添加到畫布上。

+0

我發現這個解決方案_right after_我發佈了問題。但這是正確的答案!謝謝! – Frecklefoot