我有一個網格內的畫布。我想動態地添加控件(文本塊和圖像)。我正在使用下面的代碼,但它沒有顯示任何東西。如何在Silverlight中以編程方式在畫布中添加UI元素?
XAML:
<Grid x:Name="BaseGrid"
Background="White"
Grid.Row="2">
<Canvas x:Name="RootCanvas"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Visibility="Collapsed"
Canvas.ZIndex="0">
<Canvas x:Name="BaseCanvas"
CacheMode="BitmapCache"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Canvas.Left="0"
Canvas.Top="0"
Canvas.ZIndex="0">
<Canvas.Clip>
<RectangleGeometry x:Name="BaseCanvasClip"/>
</Canvas.Clip>
<Canvas x:Name="DrawingCanvas"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Canvas.Left="0"
Canvas.Top="0"
Canvas.ZIndex="10">
</Canvas>
<Canvas x:Name="TransparentCanvas"
Background="Transparent"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Canvas.Left="0"
Canvas.Top="0"
Canvas.ZIndex="100"
Visibility="Collapsed">
</Canvas>
</Canvas>
</Canvas>
</Grid>
</Grid>
代碼:
TextBlock txtBlk = new TextBlock();
txtBlk.FontSize = 14;
txtBlk.Foreground = new SolidColorBrush(Colors.Red);
txtBlk.Text = CreateConceptTextBox.Text;
Canvas.SetTop(txtBlk, 100);
Canvas.SetLeft(txtBlk, 450);
//Grid.SetRow(txtBlk, 100);
//Grid.SetColumn(txtBlk, 450);
linkDiscovery.DrawingCanvas.Children.Add(txtBlk);
我與 「DrawingCanvas」 的擔憂。我在這裏錯過了什麼?
它看起來是正確的。你有沒有試過用'txtBlk.Text =「hello」'這樣的字符串來測試? – McGarnagle 2014-11-03 19:09:05
雅我也試過用硬編碼的字符串,但畫布是空白的。 – CSharper 2014-11-03 19:10:31