2

Grid.Column 0に割り当てられたListBoxコントロールがあり、その幅には「*」の値が定義されていますが、レンダリングすると、使用されていないかなりの量のスペースがあります。

また、ListBoxコントロール自体の周囲にある種の境界線があることに気付きましたが、マークアップ内に境界線を追加していません。

私のUI(赤でマークされた懸念領域):

ここに画像の説明を入力してください

私のマークアップ:

<Window.Resources>
        <DataTemplate x:Key="GameImagesTemplate" >
            <StackPanel Orientation="Vertical">
                <Image Source="{Binding FileInfo.FullName}" Margin="8,8,8,8" Height="70" Width="70" />
                <Label Content="{Binding Name}" Width="70" />
            </StackPanel>
        </DataTemplate>

        <DataTemplate x:Key="GameTemplate">
            <StackPanel>
                <Label Content="{Binding Name}" Background="Gray" FontSize="16" />
                <ListBox x:Name="imageContent" ItemsSource="{Binding FileList}" ItemTemplate="{StaticResource GameImagesTemplate}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
                    <ListBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapPanel Orientation="Horizontal" IsItemsHost="True" />
                        </ItemsPanelTemplate>
                    </ListBox.ItemsPanel>
                </ListBox>
            </StackPanel>
        </DataTemplate>
    </Window.Resources>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

        <ListBox x:Name="ContentList" ItemTemplate="{StaticResource GameTemplate}" Grid.Column="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled" />

        <StackPanel Grid.Column="1" Background="DarkGray">
            <Button Click="OnLoad">_Load</Button>
            <Button Click="OnSave">_Save</Button>
            <Button Click="OnAdd">_Add</Button>
            <Button Click="OnDelete">_Delete</Button>
        </StackPanel>
    </Grid>

提起された両方の問題を解決するにはどうすればよいでしょうか。これはListBoxコントロールのデフォルトの動作ですか?

どうもありがとう

4

1 に答える 1

4

はい、それがデフォルトの動作です。

配置の場合、 1行目に別のアイテムを配置するのに十分なスペースがないように見えます。デフォルトで左に設定されているため、残りのスペースは使用さWrapPanelれていません。この設定は、デフォルトでバインドされます。あなたの設定はそれを修正する必要があります。ListBoxItemHorizontalContentAlignmentListBoxListBoxItemHorizontalContentAlignment="Stretch"ListBox

外側の境界線は、およびのデフォルト設定から取得されBorderBrushますBorderThickness。設定BorderThickness="0"はそれを完全に取り除きます。

Paddingデフォルトのスタイルとテンプレートに間隔を追加する他のデフォルト設定がいくつかあります。これらをさらに詳しく知りたい場合は、Blendでプロジェクトにを追加し、デフォルトのListBoxコピーを作成して、XAMLを確認してください。また、これらのタイプのデフォルト設定がないため、選択動作が必要ない場合はベースの使用を検討してください。TemplateItemContainerStyleItemsControl

于 2013-02-11T21:53:11.077 に答える