2012-05-23 25 views
1

请帮助我,或向我显示方向。我一直在寻找这个问题的网络,但无法找到答案。 我有TextBlock,并通过单击文本块,我将选项卡项添加到我的选项卡控件。一切工作正常,除了IS Selected = true;标签项目未被选中。我必须手动选择它。这是我的代码。当从TextBlock投射时,TabItem ISSelected属性不起作用

var tabControl = (sender as TextBlock).FindParent<TabControl>(); 

tabControl.Items.Add(new TabItem() { Header = "10 Last Documents", IsSelected = true, Content = rec, Width = 150 }); 

从按钮铸造它是好的。请帮帮我!

回答

1

我无法解释为什么它与来自按钮的演员协同工作。但是当你创建UI元素并立即想要改变它的属性时,我经常看到这样的行为。大多数情况下,用户界面还没有构建,或者正在构建过程中导致阻塞某些消息管道。

这里有一个解决方法,您的问题: 异步执行通过调度您的用户界面的变化使系统得到足够的时间来创造一步一步的一切,你的IsSelected应妥善处理....

代码:

Action newTabAction =() => tabControl.Items.Add(new TabItem() { Header = "10 Last Documents", IsSelected = true, Width = 150 }); 
    Dispatcher.BeginInvoke(newTabAction); 
+0

非常感谢SvenG。在我的情况下,UI元素立即改变其属性。所以你的代码对我来说工作得很好。 –

0

这应该工作太:

tabControl.Items.Add(new TabItem() { Header = "10 Last Documents", Content = rec, Width = 150 }); 
tabControl.SelectedIndex = tabControl.Items.Count - 1; 
+0

此代码没有改变任何行为。选项卡项未选中。我不知道,这太奇怪了。 –

0

我知道这是旧的,但以防万一有人遇到这个我点击图片时发现类似问题。我发现mousedown会导致一个类似的问题,即激活选项卡不起作用,但切换到mouseup时,它开始工作。