2012-05-23 27 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時,它開始工作。