如何使按钮出现在画布的右上角

时间:2013-12-24 06:52:20

标签: c# silverlight xaml

我正在使用C# XAML。我希望我的按钮始终位于右上角 无论屏幕尺寸如何。

我试着这样做:

<Button x:Name="SubmitExperimentBtn" Content="Submit" FontWeight="Bold" 
    FontSize="18.667" Foreground="#FF0D0D0E" BorderBrush="#FF091F4B" 
    BorderThickness="1" Width="115" Height="36" VerticalAlignment="Bottom"
    Background="Black" Opacity="10"
    Click="SubmitExperimentBtn_Click" Margin="522,8,0,2">
</Button>

看起来它位于右上角,但是当我调试它时,打开资源管理器 并把它放在中间(取决于屏幕尺寸)

如何让它出现在画布的右上角转换?

4 个答案:

答案 0 :(得分:1)

使用Canvas几乎总是错误的。 Grid和StackPanel是您应该用于这些自动流场景的内容。 Canvas用于绝对布局,而不是用于自动流动,所以你真的反对它的意图。 但是,如果你坚持,使用父元素的SizeChanged事件来检测画布何时更改它的可见区域(必须是父元素,因为画布总是无限大),然后根据它设置Left值。即

Canvas.SetLeft(myButton的,e.NewSize.Width-myButton.ActualWidth)

答案 1 :(得分:1)

我找到了让它发挥作用的方法。 因为我使用Silverlight我没有Canvas.Right只是Top和Left 我在运行时获取屏幕分辨率然后 将按钮位置更改为右上角。 这是代码:

    //for the screen resolution
    double screen_resolution_x = double.Parse(HtmlPage.Document.Body.GetProperty
("clientWidth").ToString());
    double screen_resolution_y= double.Parse(HtmlPage.Document.Body.GetProperty
("clientHeight").ToString());

    //to move the botton on the Canvas
     ((Button)canvas1.FindName("SubmitExperimentBtn")).SetValue
(Canvas.LeftProperty, screen_reolution_x);
                ((Button)canvas1.FindName("SubmitExperimentBtn")).SetValue
(Canvas.TopProperty, screen_reolution_y); 

答案 2 :(得分:0)

如果您的按钮位于Canvas中,则应使用附加属性进行定位:

<Canvas>
  <Button x:Name="SubmitExperimentBtn" Canvas.Top="10" Canvas.Right="10"></Button>
</Canvas>

答案 3 :(得分:0)

尝试使用Horizo​​ntalAlignment to Right设置Margin和VerticalAlignment,如下所示。

<Button x:Name="SubmitExperimentBtn" Content="Submit" FontWeight="Bold" 
        FontSize="18.667" Foreground="#FF0D0D0E" BorderBrush="#FF091F4B" 
        BorderThickness="1" Width="115" Height="36" VerticalAlignment="Top"
        Background="Black" Opacity="10"
        Click="SubmitExperimentBtn_Click" Margin="0,8,20,2"
        HorizontalAlignment="Right">
</Button>