簡體   English   中英

如何使按鈕出現在畫布的右上角

[英]How to make a button appear at the right top of the canvas

我正在使用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>

看起來它位於右上角,但是當我調試它時打開資源管理器並將其放在中間(取決於屏幕大小)

如何使它出現在畫布的右上角轉換?

畫布幾乎總是使用錯誤的東西。 Grid和StackPanel是您應該用於這些自動流場景的內容。 Canvas用於絕對布局,而不是用於自動流動,所以你真的反對它的意圖。 但是,如果你堅持,使用父元素的SizeChanged事件來檢測畫布何時更改它的可見區域(必須是父元素,因為畫布總是無限大),然后根據它設置Left值。

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

我找到了讓它發揮作用的方法。 因為我使用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); 

如果您的按鈕位於Canvas中,則應使用附加的屬性進行定位:

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

嘗試使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM