0

最近、カスタムWPFフォームの作業中に問題に遭遇しました。(とにかく、それらはすべてカスタムではありませんか?)。次のプロパティを XAML に追加しました。

AllowsTransparency="True"
ResizeMode="NoResize"
Height="945"
Width="1621" 
WindowStyle="None"

上記のサイズのカスタム背景画像:

<Window.Background>
    <ImageBrush ImageSource="Images/form_bg.png" />
</Window.Background>

そして、それを実行した後、私が追加したいくつかのボタンが単に消えました. ボタンが表示され始めたのは、ボタンのサイズを大きくした後(おおよその300高さと幅)でした。

何が起こっているのかを理解するのに少し時間がかかりました.... Windows は私のフォームのサイズを変更してい15まし1366 x 7688.170%私のコントロールは余白を使用し、XAMLコードはそのまま残されましたが、実際のフォーム サイズが縮小されたため、私のコントロールは単純に折りたたまれました。

明らかな解決策は、画像を小さくすることです。おそらく少しトリミングします。1280x1024共通の決議として、それを適合させましょう。1024x768しかし、モニターを使用している誰かがそれを実行し、それが失敗した場合はどうなるでしょうか?

MinWidth プロパティと MinHeightプロパティ追加し、Width & Height と同じ値に設定することで Windows のサイズ変更を修正できましたが、フォームを移動した後、下部のコンテンツの一部が画面から消えてしまいました。

だから、私が探しているのは、これに対処する適切な方法です。まともなユーザーフレンドリーなソリューション。コントロールのサイズを変更できるとしたら、ユーザーは小さな画面で一部のコンテンツを読みにくくなる可能性があります。

または、ウィンドウの位置に関係なく、C# を使用してウィンドウの一部にフォーカスを維持できますか? その部分が画面から落ちない限り、そうです。

ヒント、ヒント、サンプルは大歓迎です!

4

1 に答える 1

0

あなたの問題を理解できれば、解像度に関係なくスケーリングするレイアウトを設計できますか?

私が行ったことの1つは、「スター」ユニットレイアウト(基本的にパーセンテージベース)を使用するウィンドウ上にグリッドをレイアウトし、それらのグリッド内でユーザーコントロールをViewboxに配置することです。これにより、グリッド内で垂直および/または水平ストレッチを設定できます。コントロールは、グリッド レイアウト内のビューボックス内で自動的にスケーリングされます。これにより、ディスプレイの解像度やスケールに関係なく、レイアウトとコントロールがそれに応じて調整されます。

コントロールの周りに静的マージンが必要な場合は、それらのルールが適用されます。スケールにある種の制限を作成する必要がある場合は、必要なコントロールのサイズを計算し、それらの幅と高さを結果にバインドする依存関係プロパティを作成する必要がある場合があります。

于 2014-01-11T23:15:49.743 に答える