2

VirtualizingPanel と IScrollInfo を派生させる独自の VirtualizingWrapPanel があります。

以下は、xaml での使用例です。

<ListBox x:Name="StationsListView"
             DataContext="{StaticResource ViewModelKey}"                 
             ItemsSource="{Binding Stations}">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <common:VirtualizingWrapPanel IsItemsHost="True"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Button Style="{DynamicResource DestinationButtonStyle}">
                    <TextBlock Text="{Binding FullName}"
                               Style="{DynamicResource DestinationStationTextBlockStyle}"
                               TextTrimming="CharacterEllipsis" />
                </Button>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

x:Name="vwp" で VirtualizingWrapPanel に名前を付けると、コード ビハインド ファイル内の名前でパネルを参照できます。つまり、IntelliSense はパネルを参照することを提案します。しかし、コンパイルは失敗します。コンパイラは、xaml でパネルに付けた名前を解決できないと文句を言います。

ContendRendered イベント内のオブジェクト グラフでパネルを検索して、この問題を解決しました。しかし、それは汚いハックのようです。

Name プロパティを使用して (何らかの方法で) この問題を解決するにはどうすればよいですか?

4

1 に答える 1