0

どうすればいいのかわかりませんが、カスタム Panel を作成しましたFooPanel。FooPanel で、すべての子がパネルによって事前に決定されたサイズ内に収まるように強制します (そのようにして、それらは均一になります)。私は知ってUniformGridいますが、他にもいくつかのものがあります。

どうすれば子どもたちを、私が言う枠に無理やり押し込めるかわかりません。


Child.xaml:

<Style TargetType="{x:Type l:FooChild}">
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="Padding" Value="12,2,12,2" />
    <Setter Property="Foreground" Value="Black" />
    <Setter Property="Background" Value="White" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="VerticalContentAlignment" Value="Stretch" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type l:FooChild}">
                <Border x:Name="ChromeBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
                    <ContentPresenter ContentSource="Header" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                      HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
                                      VerticalAlignment="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
                                      />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
4

4 に答える 4

1

カスタム パネルでは、子供たちにスペースを与えることしかできません。その後、そのスペースに自分自身をどのように配置するかは、子要素次第です。この動作は、 のHorizontalAlignment/VerticalAlignmentプロパティによって制御されFrameworkElementます。これらのプロパティの両方が に設定されているStretch場合、要素は、パネル内でそれらに与えたすべてのスペースを使用して引き伸ばされます。

アップデート:

HorizontalContentAllignment/に加えて、 /プロパティを要素のスタイルにVerticalContentAlignment設定します。HorizontalAlignmentVerticalAlignmentStretchFooChild

于 2011-04-06T14:19:35.707 に答える
0

Horizo​​ntalAlignment="Stretch" または Horizo​​ntalContentAlignment="Stretch" を設定しようとしましたか (そして VertialAlignment があります)

xamlを提供していただけますか?そうすれば、あなたをよりよく助けることができるかもしれません。:)

于 2011-04-06T14:03:54.423 に答える
0

すべての子をDockPanelコントロールに詰め込み、それらが唯一の子であることを確認してから、LastChildFillプロパティを に設定できますTrue

または、すべての子のMeasureOverride プロパティをオーバーライドして、それらすべてを強制的に使用可能な最大容量まで拡張することもできます。

于 2011-04-06T14:06:55.080 に答える
0

ほんの数週間前にこのような問題がありました。このように修正しましたが、それが好ましい方法ではないことに気付きました。

    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </ListBox.ItemContainerStyle>

これはa用ですがListBox、どのItemsControlでも機能すると思います。

出典:別のSOの質問

于 2011-04-06T14:11:04.660 に答える