c# - 在 silverlight 中动态创建矩形?

标签 c# silverlight

我正在尝试在 silverlight 中以编程方式创建矩形作为休闲区。

C#

   private Boolean Working = false;
    const int scale = 4;
    const int size = 50;
    Int32[] data = new Int32[size];
    Rectangle[] lines = new Rectangle[size];

 private void button1_Click(object sender, RoutedEventArgs e)
        {
            canvas1.Children.Clear();
            for (int i = 0; i < data.Length; i++)
            {

                data[i] = i;
                lines[i] = new Rectangle()

                {

                    Height=i*scale,
                    Width = 10,
                    StrokeThickness=5,
                    Stroke = new SolidColorBrush(Colors.Red),
                    Name=i.ToString(),
                };

                canvas1.Children.Add(lines[i]);
            }
        }

现在的问题是创建的所有矩形都具有相同的高度和宽度?

XAML

<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="500"  d:DesignWidth="500">

    <Canvas x:Name="canvas2" Background="White">
        <Canvas x:Name="canvas1" Background="White"></Canvas>
        <Button Content=" Generate"  Height="38"  Name="button1"  Width="75"  Click="button1_Click" Margin="0,352,245,24" HorizontalAlignment="Right" Canvas.Left="12" Canvas.Top="85" />
        <Button Content="Shuffle" Height="38" HorizontalAlignment="Left"  Name="button2" Margin="12,352,0,24" Click="button2_Click_1" Canvas.Left="81" Canvas.Top="85" Width="71" />
        <Button Canvas.Left="181" Canvas.Top="437" Content="Bubble Sort" Height="38" Name="button3" Width="109" Click="button3_Click" />
    </Canvas>

</UserControl>

截图

enter image description here

最佳答案

实际上,一切正常。所有的矩形都有不同的高度。但是你忘了移动它们,所以它们开始重叠。更改一点代码,您将看到:

lines[i] = new Rectangle()
{
    Height = i * scale,
    Width = 10,
    StrokeThickness = 5,
    Stroke = new SolidColorBrush(Colors.Red),
    Name = i.ToString(),
};
lines[i].Margin = new Thickness(11 * i, 0, 0, 0);

结果

Screenshot

关于c# - 在 silverlight 中动态创建矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5141690/

相关文章:

c# - 在 mediaElement 中设置位置(WP8.1 中的 ScrubbingEnabled 替代方案)

.net - 在数据库中保存格式化文本的有意义的格式是什么?

c# - Silverlight自定义Tabcontrol设计

c# - 将数据表值保存为空字符串而不是 null

c# - 哪种语句对 SQL 注入(inject)更好、更安全?

c# - WPF 动画开始但显示太晚

c# - 构造函数不能调用自己c#

c# - 带有 View 模型、参数和结果的 Mvvm 弹出窗口

c# - 创建模型时无法使用上下文异常

c# - 如何在列表列中查找相同的值并在其他行上连接字符串以获得相同的列值