私はこのようなリストビュー内の私のユーザーコントロールを仮想化しようとしています:私はアイテムとして長方形を使用している場合virtualzing、dosen'tの仕事を仮想化、ListViewがユーザーコントロールを仮想化しないのはなぜですか?
<ListView VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.CleanUpVirtualizedItem="stackPanel1_CleanUpVirtualizedItem"
VirtualizingStackPanel.VirtualizationMode="Standard"
Height="239" HorizontalAlignment="Left" Name="stackPanel1" VerticalAlignment="Top" Width="133" >
<ListView.Items>
<me:UserControl1 Backg="Green" />
<me:UserControl1 Backg="Blue" />
<me:UserControl1 Backg="Black" />
<me:UserControl1 Backg="Red" />
<me:UserControl1 Backg="Green" />
<me:UserControl1 Backg="Blue" />
<me:UserControl1 Backg="Black" />
<me:UserControl1 Backg="Red" />
<me:UserControl1 Backg="Blue" />
<me:UserControl1 Backg="Black" />
<me:UserControl1 Backg="Green" />
<me:UserControl1 Backg="Green" />
</ListView.Items>
</ListView>
が、ちょうどこのように、仕事:
<ListView VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.CleanUpVirtualizedItem="stackPanel1_CleanUpVirtualizedItem"
VirtualizingStackPanel.VirtualizationMode="Standard"
Height="239" HorizontalAlignment="Left" Name="stackPanel1" VerticalAlignment="Top" Width="133" >
<ListView.Items>
<Rectangle Width="20" Height="20" Fill="Gray" ></Rectangle>
<Rectangle Width="20" Height="20" Fill="Green"></Rectangle>
<Rectangle Width="20" Height="20" Fill="Orange"></Rectangle>
<Rectangle Width="20" Height="20" Fill="Blue"></Rectangle>
<Rectangle Width="20" Height="20" Fill="Black"></Rectangle>
<Rectangle Width="20" Height="20" Fill="Red"></Rectangle>
<Rectangle Width="20" Height="20" Fill="Gray"></Rectangle>
<Rectangle Width="20" Height="20" Fill="Green"></Rectangle>
<Rectangle Width="20" Height="20" Fill="Orange"></Rectangle>
</ListView.Items>
</ListView>
UserControl1のXAMLは、このようなものです:
<UserControl x:Class="WpfApplication3.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
Width="20" Height="20"
>
<Grid>
<Rectangle Name="internalRect" Width="20" Height="20" Fill="Black"></Rectangle>
</Grid>
</UserControl>
トンをスクロールしながら、私は、仮想化が動作されているかどうかを検出するために、イベントにCleanUpVirtualizedItemを使用彼はリストを表示すると、イベントは四角形を使用してのみトリガーされますが、UserControl1ではなく、任意のアイデアですか?
なぜ私はそれが四角形のために働くか分からない、さもなければ私は答えとしてこれを掲示したでしょう。つまり、MSDNの「StackPanelの仮想化は、パネルに含まれているアイテムコントロールが独自のアイテムコンテナを作成した場合にのみ発生します」データバインディングを使用してこれを行うことができます。 VirtualizingStackPanelは、StackPanelに比べてパフォーマンス上の利点はありません。 – dowhilefor