【问题标题】:how to add UI elements programmatically in canvas in silverlight?如何在 Silverlight 的画布中以编程方式添加 UI 元素?
【发布时间】:2014-11-03 17:01:33
【问题描述】:

我有一个网格内的画布。我想动态添加控件(文本块和图像)。我正在使用以下代码,但它没有显示任何内容。

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" 这样的文字字符串进行测试?
  • 是的,我也尝试使用硬编码字符串,但画布是空白的。

标签: c# silverlight canvas


【解决方案1】:

您将 RootCanvas 的 Visibility 设置为 Collapsed,这会有效地隐藏它及其所有子项,包括 DrawingCanvas。

【讨论】:

  • 我让它可见,但结果也一样。
  • 您的 Canvas.Clip 定义不正确。由于您没有为剪辑指定大小,因此实际上是在剪辑所有内容。要么删除剪辑,要么给它一个实际大小。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
  • 2012-05-22
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多