【发布时间】:2015-07-23 22:53:24
【问题描述】:
我在顶部有一个元素列表(clickme1 和 clickme2)。这个元素中的每一个都会在 MyList 中包含一些我想在列表框的 customElement 中显示的信息。
默认情况下单击 Clickme1。当我单击 Clickme2 时,列表框需要 2-3 秒才能通过 Clickme2 的信息更新 CustomElements。当我再次切换时,它会立即更新,因此问题仅在第一次单击时可见。 CustomElement 对 Clickme 元素(图像和文本)有很多不同的绑定。
这是我的代码:
public ObservableCollection<CustomClass> MyList { get; set; }
<ListBox x:Name="MyListBox"
ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible"
ItemsSource="{Binding MyList}">
<ListBox.ItemTemplate>
<DataTemplate>
<local:CustomElement x:Name="MyCustomElement"/>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="OverridesDefaultStyle" Value="true" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border x:Name="Border" BorderBrush="Transparent" Background="Black">
<ContentPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
我尝试使用 VirtualizingStackPanel 而不是 WrapPanel,但没有任何改进。
有什么帮助吗?
【问题讨论】:
标签: wpf performance data-binding datatemplate