zoukankan      html  css  js  c++  java
  • 让 wpf tabcontrol 延缓初始化每个tab item content

      当手动增加tabItem给tab control时, 尽管只是显示第一个tab item的content, 但是每个tab item的content的都会被创建,这样会使得创建tab control时比较慢,特别是tab item很多,元素也很多的时候;,(这种情况下itemsControl 的UI virtualization也是失效的),

    <

    TabControl x:Name="TabControl"><TabItemx:Name="DetailTabItem" Header="Detail">

    <local:DetailTabView x:Name="DetailTabView"DataContext="{Binding Path=Detail}" /></TabItem>

    <TabItemx:Name="DetailTabItem2" Header="Detail2">

    <local:DetailTabView x:Name="DetailTabView2" DataContext="{Binding Path=Detail2}" />

    </TabItem>

    </TabControl>

    创建DetailView比较好时

    给custom tabItem control加上ContentType和 ContentDataContext 两个属性,当TabControl的 selectionChanged时候再去创建content

     

    <TabControl x:Name="TabControl">

    <TabItemx:Name="DetailTabItem" Header="Detail"

    ContentType="{x:Type local:DetailTab}"

    ContentDataContext="Detail"

    > </TabItem>

    </TabControl>

     然后在tabcontrol的selection change时候创建content

    protectedoverridevoid OnSelectionChanged(System.Windows.Controls.SelectionChangedEventArgs e)

    {

    MyTabItem vti = selectedTabItem asMyTabItem;

    if (null == vti.Content)

    {

    vti.Content = Activator.CreateInstance(vti.ContentType);

    if (null != vti.ContentDataContext)

    {

    Binding binding = newBinding();

    binding.Source = this.DataContext;

    binding.Path = newPropertyPath(vti.ContentDataContext);

    ((FrameworkElement)vti).SetBinding(FrameworkElement.DataContextProperty, binding);

    }

    这样就把tab item content初始化延迟到tab control 得selection change时候创建,提高初始化tab control的速度。虽然增加了每个tab第一次打开的时间。

  • 相关阅读:
    idea中如何配置tomcat
    onselectstart属性解决双击出现的蓝色区域
    (二十二)数组的最大值和最小值
    (二十一)数组的初始化
    (二十)两种数据类型的对比
    (十九)数组的内存分配
    (十八)数组概述
    (十六)函数的重载
    (十七)自定义函数
    (十五)函数的入栈和出栈
  • 原文地址:https://www.cnblogs.com/liangouyang/p/1638933.html
Copyright © 2011-2022 走看看