首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在WPF中以编程方式更改元素的位置

在WPF中以编程方式更改元素的位置
EN

Stack Overflow用户
提问于 2009-07-14 02:02:26
回答 6查看 45.8K关注 0票数 23

我不知道这个简单的事情会有点复杂。我有一个画布,我试图在其中动态添加Ellipse。代码如下:

<StackPanel>

        <Canvas Name="canvas" Background="LightBlue" Margin="5" Width="250" Height="250">

        </Canvas>

        <Button Content="Draw Images" Click="Button_Click" Width="100" Margin="10" />

    </StackPanel>

下面是后面的代码:

private void Button_Click(object sender, RoutedEventArgs e)
        {
            Ellipse ellipse = new Ellipse();
            ellipse.Fill = Brushes.Red;
            ellipse.Width = 10;
            ellipse.Height = 10;

            ellipse.SetValue(Canvas.LeftProperty,100);
            ellipse.SetValue(Canvas.TopProperty,100);

            canvas.Children.Add(ellipse); 


        }

由于某种原因,它会抛出100不是有效值的异常!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-07-14 02:39:52

这就是答案:

Canvas.SetLeft(ellipse,GetRandomValue());
Canvas.SetTop(ellipse,GetRandomValue());
票数 32
EN

Stack Overflow用户

发布于 2009-07-14 09:51:12

100不工作的原因是SetValue()将其解释为整数,而Canvas.TopCanvas.Left是双精度的。请尝试使用100d。此外,SetLeft()SetTop()也可以工作,因为他们希望是双倍的。

票数 15
EN

Stack Overflow用户

发布于 2010-09-10 03:43:51

下面的代码可以工作:

ellipse.SetValue(Canvas.LeftProperty,100.0);
ellipse.SetValue(Canvas.TopProperty,100.0);

这些值是double类型的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1123101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档