13

windowstartuplocationをデスクトップの右上隅に設定したいだけです。今、いくつかのことを片付けるために、私は同じ質問でこのスレッドを見ました:

WPFウィンドウの起動場所を変更する

今、私は彼らが右または左と呼んでいるものと混同したくないので、アプリケーションを右上隅から開始したいと思います。ここで、右は私の右側を指します(私のデスクトップが私を見ている人であるかのようにではなく、その右側)。だから、

1.)左側と上部を0のみに設定することは解決策ではありません(アプリを右側ではなく左側に移動します)

2.)SystemParameters.PrimaryScreenWidthを使用しようとしましたが、バインド時にこの値からアプリの幅を減算する操作を実行できません。

それほど複雑にならずにそれを行うことができる方法はありますか?

4

2 に答える 2

25

それほど複雑にならずにそれを行うことができる方法はありますか?

最も簡単な方法は、開始位置を手動で設定してからLeft、コードビハインドでプロパティを設定することです。

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" 
    Height="500" Width="500"
    WindowStartupLocation="Manual" 
    Top="0">
</Window> 

背後にあるコード:

public Window1()
{
    InitializeComponent();
    this.Left = SystemParameters.PrimaryScreenWidth - this.Width;
}

これは、コードでそれを行うことの単純さが、背後にコードを導入することの不利な点よりも重要であると私が感じる1つの場所です。

于 2012-09-25T20:20:32.200 に答える
0

WorkArea.Widthを使用する場合は、タスクバーの幅が考慮されていることを確認してください(横、左、または右に配置する場合)。this.Widthまたはthis.MaxWidthを使用して、ウィンドウが作業領域の外にずれないようにしますが、this.Leftの値NaN(数値ではない)を生成しないように、両方の値を(xamlまたはコードビハインドで)設定する必要があります。 。

public MainWindow()
    {
        InitializeComponent();
        this.Left = SystemParameters.WorkArea.Width - this.MaxWidth;
    }

<Window
    ... more code here ...
    WindowStartupLocation="Manual" Top="0" MaxWidth="500" >
于 2018-02-08T16:09:12.757 に答える