我有自己的 VirtualizingWrapPanel,它派生了 VirtualizingPanel 和 IScrollInfo。
下面是如何在 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 属性(以某种方式)克服这个问题?