SL中Tab中的树 控件,来回切换文字丢失(一次有,一次没有的变化)

he_hawk 2013-10-31 04:02:23
我的tab包含两个标签,分别包含一个树,初始打开页面正常,但切换TAB,出现文字丢失,再切换显示文字时,文字样式已经变化,这样来回切换,文字是一次消失,一次出现。
下图为初始进入页面的 样子:完全正常。

下图为切换到另一个Tab,再切换回来时,文字消失

下图为再次切换到另一个Tab,再切换回来时,文字出现,但样式发生变化
...全文
131 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
he_hawk 2013-11-04
  • 打赏
  • 举报
回复
Bonjour-你好 2013-11-01
  • 打赏
  • 举报
回复
以前试用过某第三方控件,也碰到过类似的,但我当时是使用了一种叫“虚拟化”的技术,也是头一次显示有数据,拉动几次滚动条后,就会出现文字消失,不使用虚拟化,就没那个问题出现,当时也很郁闷
he_hawk 2013-10-31
  • 打赏
  • 举报
回复
SL toolkit样式造成的,找到问题了, 样式处理checkbox刷新时有缺陷 前5个来的人送分
he_hawk 2013-10-31
  • 打赏
  • 举报
回复
把 CheckBox cb = new CheckBox();换成 TextBlock,则文字不会丢失,但我现在需要有选择的样子。分开添加2个控件,文字不是丢失(因文字已经在textblock),样式还会变化。 想知道为什么?
he_hawk 2013-10-31
  • 打赏
  • 举报
回复
在构造函数中 得到数据并加载的树,主要的树方法如下

 private void AddTreeNode(string parentID, TreeViewItem treeViewItem)
        {
            IList<BaseServiceRef.tbasemenufunction> tree = (from li in listMenuFun
                                where li.PCode == parentID
                                select li
                                  ).ToList<BaseServiceRef.tbasemenufunction>();

            if (tree.Count > 0)
            {
                foreach (BaseServiceRef.tbasemenufunction m in tree)
                {
                    TreeViewItem objTreeNode = new TreeViewItem();
                    StackPanel sp = new StackPanel();
                    CheckBox cb = new CheckBox();
                    cb.Checked += new RoutedEventHandler((sender, e) =>
                    {
                        foreach (TreeViewItem item in objTreeNode.Items)    //循环处理树的子节点
                        {
                            ((item.Header as StackPanel).Children[0] as CheckBox).IsChecked = true;
                        }                        
                    });
                    cb.Unchecked += new RoutedEventHandler((sender, e) =>
                    {
                        foreach (TreeViewItem item in objTreeNode.Items)    //循环处理树的子节点
                        {
                            ((item.Header as StackPanel).Children[0] as CheckBox).IsChecked = false;
                        }
                    });
                    cb.Tag = m.SCode;
                    if (_Menu_SCodeSBefore.IndexOf(m.SCode) != -1)
                    {
                        cb.IsChecked = true;
                    }
                    cb.Content = m.FuncName;
                    sp.Children.Add(cb);
                    objTreeNode.Header = sp;
                    objTreeNode.DataContext = m;
                    objTreeNode.IsExpanded = true;
                    

                    if (treeViewItem == null)
                    {
                        tvMenuFunction.Items.Add(objTreeNode);
                    }
                    else
                    {
                        treeViewItem.Items.Add(objTreeNode);
                    }
                    AddTreeNode(m.SCode, objTreeNode);
                }
            }
        }

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧