1

リストボックスの内容を正しく配置するのに問題があります。次の XAML があります。基本的に、それぞれ独自のヘッダーの下に多数の ListBox を表示しようとしています。スクリーンショットも添付しています。ご覧のとおり、最も長い TextBlock を持つ ListBox だけが、X ボタンを適切に右揃えにします。Horizo​​ntalContentAlignment="Stretch" を試しましたが、うまくいきませんでした。また、含めている ListBox、ListBoxItem、および GroupBox のスタイルが変なことをしていないことを再確認しました。基本的にすべてのスタイリングを削除しましたが、問題は解決しません。何か案は?XAML の変更など、あらゆるアイデアを受け入れます。

<ItemsControl Grid.Row="0" ItemsSource="{Binding Path=Items}">
<ItemsControl.ItemTemplate>
    <DataTemplate>
        <GroupBox Header="{Binding Path=CategoryName}">
            <ListBox Grid.IsSharedSizeScope="True" ItemsSource="{Binding Path=Items}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="15" SharedSizeGroup="Col1"/>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="Col2"/>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="Col3"/>
                                <ColumnDefinition Width="11" SharedSizeGroup="Col4"/>
                            </Grid.ColumnDefinitions>

                            <Path Grid.Column="0" Visibility="{Binding Path=IsChecked, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}" Stroke="{StaticResource Green06Brush}" StrokeThickness="2" SnapsToDevicePixels="False" Data="M 1 6 L 4 9 L 10 1" Margin="0.6,0.6,0.6,0.6" ClipToBounds="true" StrokeEndLineCap="Flat" StrokeStartLineCap="Flat"/>

                            <TextBlock Grid.Column="1" Text="{Binding Path=Symbol}" HorizontalAlignment="Left" Margin="2,0,10,0"/>
                            <TextBlock Grid.Column="2" Text="{Binding Path=Name}" HorizontalAlignment="Left" Margin="0,0,10,0"/>

                            <fpp:ImageButton Grid.Column="3" RenderOptions.BitmapScalingMode="NearestNeighbor" Source="Images/Clear_X.png" MouseOverSource="Images/Clear_X_On.png" DisabledSource="Images/Clear_X_Disabled.png" HorizontalAlignment="Right" VerticalAlignment="Center" Click="ClickRemoveTicker"/>
                        </Grid>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ListBox>
        </GroupBox>
    </DataTemplate>
</ItemsControl.ItemTemplate>

元のスクリーンショット

元のスクリーンショット

更新されたスクリーンショット

ここに画像の説明を入力

4

1 に答える 1

0

問題は、それぞれGridが項目コンテナーに含まれており、そのコンテナーはその内容と同じ大きさしか大きくならないことです。

<GroupBox Header…&gt;要素を次のように変更してみてください。

<GroupBox Header…
          Width="{Binding ActualWidth,
              RelativeSource={RelativeSource FindAncestor, AncestorType=ItemsControl}}">

原則として、これはすべてのアイテムの幅をそれ自体GroupBoxの幅に等しく設定する必要がありItemsControlます。

祖先Gridにバインドすることを除いて、s で同じことを行う必要がある場合があります。GroupBox

すべてGridが同じ幅になったので、ボタンは右側に並んでいるはずです。

于 2012-09-27T18:04:28.000 に答える