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第一次打开的时间。

  • 相关阅读:
    iOS开发第三方库一 IQKeyboardManager
    跟着百度学PHP[14]-初识PDO数据库抽象层
    文件上传漏洞的一些总结
    逻辑漏洞挖掘入门之 简单的任意账户密码重置
    突破MIME限制上传
    关于Safe DOG的文件上传bypass
    跟着百度学PHP[13]-文件上传
    PHP flock() 函数 php中的文件锁定机制
    mysql变量
    一份不错的php面试题(附答案)(笔试题)
  • 原文地址:https://www.cnblogs.com/liangouyang/p/1638933.html
Copyright © 2011-2022 走看看