2014-11-03 3 views
0

У меня есть холст внутри сетки. Я хочу добавить элементы управления динамически (текстовый блок и изображение). Я использую следующий код, но он ничего не показывает.Как добавить элементы пользовательского интерфейса программно в холст в silverlight?

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". Что мне здесь не хватает?

+0

Он выглядит правильно. Вы пытались использовать литеральную строку, например 'txtBlk.Text =" hello ", чтобы проверить? – McGarnagle

+0

Я тоже пытался с жестко закодированной строкой, но холст был пустым. – CSharper

ответ

1

У вас есть видимость вашего RootCanvas, установленного в Collapsed, которая эффективно скрывает ее и все ее дочерние элементы, включая DrawingCanvas.

+0

Я сделал это видимым, но и тем же результатом. – CSharper

+1

Ваш Canvas.Clip не определен правильно. Поскольку вы не даете размер клипа, вы на самом деле обрезаете все. Либо удалите клип, либо придайте ему фактический размер. – Mitchell

Смежные вопросы