2

自分のアイテムListViewを成長させて、内の利用可能なスペースの幅全体を占めるようにしたいと思いますListView

現在、アイテムの幅を次のように設定しています(ListViewlistViewという名前です)。

Width="{Binding ActualWidth, ElementName=listView, Mode=OneWay}"

アイテムはの幅を占めListViewます。ただし、垂直スクロールバーは考慮されません。スクロールバーが存在する場合は、アイテムの右端の上に描画されます。

これを修正することは可能ですか?

4

3 に答える 3

2

ItemsPresenterを直接参照することでこれを解決しました。これを行うには、ビューボックスのテンプレートを定義し、ItemsPresenterという名前を付ける必要がありました。

テンプレートは次のようになります。

<ListView.Template>
    <ControlTemplate TargetType="{x:Type ListView}">
        <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="1" SnapsToDevicePixels="true">
            <ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">
                <ItemsPresenter x:Name="MLVItemsPresenter" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
            </ScrollViewer>
        </Border>
       <--SNIP-->
    </ControlTemplate>
</ListView.Template>

そして、幅のバインディングは次のようになります。

Width="{Binding ActualWidth, ElementName=MLVItemsPresenter, Mode=OneWay}"
于 2010-07-28T17:13:49.947 に答える
1

単なるアイデアですが、wWidth設定をすべて削除した場合はどうなりますか?

私が使用するとき:

    <ListView DockPanel.Dock="Top">
        <ListViewItem Background="Orange">aaa</ListViewItem>
        <ListViewItem>aaa</ListViewItem>            
    </ListView>

オレンジ色のアイテムは、ListViewの幅全体に広がります。

于 2010-07-27T21:13:39.713 に答える
0

ActualWidthスクロールバーが含まれているので、それを修正する方法はないと思います。を使用するのはViewBoxどうですか?

于 2010-07-27T21:03:27.413 に答える