我正在使用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>
看起来它位于右上角,但是当我调试它时,打开资源管理器 并把它放在中间(取决于屏幕尺寸)
如何让它出现在画布的右上角转换?
答案 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)
尝试使用HorizontalAlignment 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>