WPF-パディング付きWrapPanel

WPF-パディング付きWrapPanel

WPF WrapPanel任意の行の空白領域を任意のコントロールで埋めることができます。

最后更新 2023/01/18 20:36
Eric Ouellet
预计阅读 3 分钟
分类
WPF
标签
.NET C# WPF

本文は翻译Google翻译加持から来ています。

著者:エリック·ウエレ

タイトル:WPF-WrapPanel with Fill

原文へのリンク:https//www.codeproject.com/Tips/990854/WPF-WrapPanel-with-Fill

原文のサンプルコード:https//www.codeproject.com/KB/static/990854/WpfWrapPanelWithFill.zip

プレゼンテーション:プレゼンテーション

我意识到很多人都需要和我一样的布局容器:一个 WrapPanel,可以用一个或多个子控件填充右边空白空间(Orientation=Horizontal,站长注:注意了哦,不一定填充的是在最左边,也不一定是最右边,可以是中间哦)。我决定编写一个可重复使用的控件来在两个方向上完成这项工作。

このコードには小さなデモが含まれており、ニーズに合っているかどうかを簡単に確認できます。

** ご注意:フィードバックをありがとうございます。コードが気に入らなければ、その理由を教えてください。誰かを助けてくれるといいですね♪

サンプルコードのスクリーンショット

背景は

StackOverflowにはいくつかのQ & Aがありますが、複数行で動作する簡単なソリューションはありません。また、どこでも簡単に再利用できるコントロール(コンテナ)を作りたいです。Microsoftのコードから始めて、必要な動作を提供するように変更しました。

コードの利用

DLLを使用するか、ソースコード(.csファイルのみ)を独自のライブラリにコピーすることができます。

使用方法は以下の通り。

<Window x:Class="WpfWrapPanelWithFillTestApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wrapPanelWithFill="clr-namespace:WrapPanelWithFill;assembly=WrapPanelWithFill"
        Title="MainWindow" Height="400" Width="800">

  <wrapPanelWithFill:WrapPanelFill Grid.Row="2" Grid.Column="6" Orientation="Vertical">
    <TextBlock Text="Path: " TextWrapping="Wrap"></TextBlock>
    <TextBox MinWidth="120" wrapPanelWithFill:WrapPanelFill.UseToFill="True">*</TextBox>
    <Button>Browse...</Button>
  </wrapPanelWithFill:WrapPanelFill>

</Window>

制限(改善方法)

  • 为定义为填充的控件考虑设置 MaxWidth属性(或当 OrientationVertical时设置MaxHeight)。
  • 各サブコントロールの塗りつぶし幅は常に同じです(さらに多くのサブコントロールが“塗りつぶし”として定義されている場合)。“Grid”で“GridLength”を使って同じ“Scale”を定義すると良いでしょう。例えば、RowDefinitionの“Width”)。
  • 添加HorizontalContentAlignementVerticalContentAlignement 使控件更加完整。 当我们需要在右侧中心而不是左侧对齐控件时,它很有用。 我在 StackOverflow 的 DTig 找到了一个很好的解决方案。

理想的には、ソリューション内の各改善の組み合わせであり、それは素晴らしいことです。

歴史と歴史

  • 2015- 0 5 -12、初版
  • 2015-05-13コードを簡潔にし、ヒントのバグを修正し、スクリーンショットを追加しました。
  • 2015-05-22限界を明確にする。テキストを少し改善します。

合意書の作成

この文書、および関連するソースコードおよびファイルは、CPOL Code Project Open Licenseの下でライセンスされています。

駅長追加。

前述のように、コンテナコードを自分のプロジェクトにコピーして使用してください。

站长也将该容器添加到Dotnet9WPFCotnrols包下,代码如下:

    <Window
    /**省略 */
    xmlns:dotnet9="https://dotnet9.com"
    /**省略 */
    >
    /**省略 */
    <GroupBox Header="WrapPanelFill">
        <StackPanel Orientation="Vertical">
            <Image
                Width="300"
                Height="300"
                Source="Images/Swift.png" />
            <dotnet9:WrapPanelFill>
                <Button Content="反馈" Style="{StaticResource Styles.ButtonDemo}" />
                <TextBlock dotnet9:WrapPanelFill.UseToFill="True" />
                <Button Content="喜欢" Style="{StaticResource Styles.ButtonDemo}" />
                <Button Content="不感冒" Style="{StaticResource Styles.ButtonDemo}" />
            </dotnet9:WrapPanelFill>
        </StackPanel>
    </GroupBox>
</Window>

和前面的代码类似,使用一个TextBlock作为空白填充,运行效果如下:

最後に、この記事のすべてのコードを提供します:

  • 原文のサンプルコード:https//www.codeproject.com/KB/static/990854/WpfWrapPanelWithFill.zip
  • Dotnet 9 WPFControlsパッケージ:https://www.nuget.org/packages/Dotnet9WPFControls/0.1.0-preview.3
  • Dotnet9WPFControlsソース:https//github.com/dotnet9/Dotnet9WPFControls
  • 末尾のサンプルコードhttps//github.com/dotnet9/TerminalMACS.ManagerForWPF/blob/master/src/Demo/WpfThemeDemo/MainWindow.xaml
Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2025/01/26

WPFはカスタムXMLファイルで国際化を実現

この記事では、必要なNuGetパッケージのインストール、言語リストの動的取得、言語の動的切り替え、コードとxamlインターフェイスでの翻訳文字列の使用、開発者がWPFアプリケーションを簡単に国際化できるようにするソースコードへのリンクなど、WPFプログラムでカスタムXMLファイルを使用した国際化の方法について詳しく説明します。

继续阅读
同分类 / 同标签 2024/01/25

C#WPFにおけるFluentValidationの使用

この記事では、C#WPFプロジェクトでFluentValidationをプロパティ検証に使用する方法を詳しく見て、MVVMパターンでこれを実装する方法を示します。

继续阅读