这是一个好奇的问题,我对如此昂贵的布局没有实际用途。
我有以下 Xaml
<Window x:Class="WpfApplication16.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStartupLocation="CenterScreen">
<TabControl ItemsSource="{Binding Items}">
<TabControl.ContentTemplate>
<DataTemplate>
<ScrollViewer>
<ContentPresenter Content="{Binding View}" />
</ScrollViewer>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</Window>
以及后面的代码
public class Item
{
public FrameworkElement View { get { return m_view; } }
public Item()
{
for (int i = 0; i < 3000; ++i)
{
m_view.Items.Add(new TextBox());
}
}
ItemsControl m_view = new ItemsControl();
}
public partial class MainWindow : Window
{
public List<Item> Items { get; private set; }
public MainWindow()
{
Items = new List<Item>();
for (int i = 0; i < 10; ++i)
{
Items.Add(new Item());
}
DataContext = this;
InitializeComponent();
}
}
因此,在窗口初始化之前,所有的 TextBox 都已经构建好了,总共 30,000 个,但它们还没有被加载。它们仅在选择更改时加载/卸载,例如在初始选择发生时。由于文本框的数量庞大,我希望第一次更改每个项目的选项卡需要一段时间,但为什么在我选择了每个选项卡之后,再次浏览它们仍然需要很长时间才能加载/卸载?
没有绑定,我不认为这是一个布局问题,因为当我调整窗口大小时,它的更新速度比更改选项卡之间的速度要快得多。我认为这也不是内存问题(必须加载和加载的东西),因为内存使用量在选择选项卡之间增长,然后在选择所有 10 个选项卡后保持不变,然后再次运行。
另外我故意不使用可视化。