4

私はユーザーコントロールを頻繁に切り替えるアプリケーションを持っています。ウィンドウの最大サイズまで拡大したいのですが、何かがそれを妨げており、代わりに可能な限り最小限のスペースを占有しています。

ユーザーコントロール内のコンポーネントのサイズが適切に変更されていることに気付きました(つまり、コントロールの下部にロックされているボタンは所定の位置に留まり、コントロールはウィンドウの下部に到達しておらず、最終的にボタンが表示されます)。 tそれらにサイズ関連のプロパティを設定します(私はいくつか試しましたが、どれも望ましい効果がありませんでした)。したがって、問題はコントロールを表示するメインコンポーネントにあると思います。これは次のように設定されています。

<Window.Resources>
    <DataTemplate DataType="{x:Type vm:MessageViewModel}">
        <vw:MessageView/>
    </DataTemplate>
    <DataTemplate DataType="{x:Type vm:ConnectionsViewModel}">
        <vw:ConnectionView/>
    </DataTemplate>
    ...
</Window.Resources>
<Grid>
    <ItemsControl ItemsSource="{Binding ViewModels}" Margin="0,20,0,0"/>
    ...
</Grid>

Ernoのおかげで私が使用したソリューション:

変化する

<ItemsControl ItemsSource="{Binding ViewModels}" Margin="0,20,0,0"/>

<ItemsControl ItemsSource="{Binding ViewModels}" Margin="0,20,0,0">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>
4

1 に答える 1

7

ItemsControlは、アイテムをItemTemplateに配置し、それらをItemsPanelに配置します。

ItemsPanelは、ItemsPanelTemplateを設定することで調整できます。

デフォルトでは、ItemsPanelはStackPanel(垂直)であり、StackPanelは行を分散したりアイテムを垂直に拡大したりしません。

したがって、できることは、ItemsPanelTemplateに別のコントロールを配置して、必要に応じてアイテムを拡大および整列することです。

于 2012-05-18T14:10:49.090 に答える