0

最初にコンテンツに合わせて自動サイズ変更されるサイズ変更可能なウィンドウを作成したいと思います。ウィンドウのサイズが制限に達すると、自動サイズ変更が無効になり、拡大するコントロールがクリップされるか、スクロールバーで表示されます。ユーザーがウィンドウのサイズを変更するときも、自動サイズ変更をオフにする必要があります。

実際のタスクは、テキストコントロールを備えた便利なサイズ変更可能なダイアログウィンドウを作成することです。テキスト行がほとんど含まれていない場合は、最初にダイアログのサイズを自動化するのが妥当です。テキストの量が増え、ダイアログが大きくなります。確かに、いくつかのサイズの制約が必要です。

PSレイアウトのメジャーパス中のサイジングのガイドの役割が、子から親へ、そしてその逆へと条件付きで切り替わるレイアウトを定義することは、非常に頻繁な作業だと思います。

アイデアや既存のソリューションを共有します。何かが足りないのかもしれません。ありがとうございました。

アップデート1

アルゴリズムについて説明します。

1)ウィンドウが表示されます(すべてのデータ/コンテンツがすでに設定されていると想像してください)。

2)そのサイズは、ウィンドウのプロパティが次のように調整されます。

MaxHeight=..。

MaxWidth=..。

SizeToContent = "WidthAndHeight"

3)ユーザーがウィンドウのサイズを変更しようとしました。そして彼はそれを行うことができます。内部コントロールはそれに応じてサイズを変更します。

この動作は、プロパティセットと同等です。

MaxWidth = "{x:Ststic Double.PositiveInfinity}"

MaxHeight = "{x:Ststic Double.PositiveInfinity}"

SizeToContent="手動"

ResizeMode = "CanResizeWithGrip"

4

2 に答える 2

1

はい、アニメーション/トリガーのみを使用してXAMLで実行できますが、少し注意が必要です。TextBlock Loadedイベント(xamlのみ)にフックし、アニメーションを使用してEventTrigger内でSizeToContent = manual && MaxWidth&MaxHeight=PosInfinityを変更するだけです。

于 2012-09-06T14:22:18.687 に答える
0

WPFのパネルの多くは、子に基づいて自動的にサイズ変更されます。この記事を読んで、WPFで使用できるレイアウトパネルの種類を理解することをお勧めします:WPFレイアウト:ビジュアルクイックスタート

ただし、質問に答えるには、自動的にサイズ設定するすべてのコントロールを、aGridやaなどの子を自動的に拡大するパネルに配置し、パネルのプロパティをDockPanel設定してMaxHeightMaxWidth特定の高さ/幅を超えないようにします。

<Grid MaxHeight="100" MaxWidth="200">
    <!-- Place your content here -->
</Grid>

パネルを含む親コントロールのデフォルトの動作によっては、HorizontalAlignmentVerticalAlignmentをそれ以外のものに設定する必要がある場合がありStretchます。

<Grid>
    <Grid MaxHeight="100" MaxWidth="200" HorizontalAlignment="Left" VerticalAlignment="Top">
        <!-- Place your content here -->
    </Grid>
</Grid>

コンテンツをクリップする代わりに必要な場合は、内部ScrollBarを追加しますScrollViewerGrid

于 2012-09-06T12:46:30.773 に答える