2011-06-28 71 views
1

我想使用DataBinding動態填充TabControl,但有問題; dataBinding運行良好,但我希望每個TabItem的內容都是獨立的。這是我的XAML代碼:WPF:奇怪的問題dataBinding與TabControl

  <TabControl DockPanel.Dock="Left" ItemsSource="{Binding OpenChats}"Name="tabChats" VerticalAlignment="Top" Width="571"> 

       <TabControl.ItemTemplate> 
        <DataTemplate > 
         <TextBlock Text="{Binding Name}"/> 
        </DataTemplate> 
       </TabControl.ItemTemplate> 
       <TabControl.ContentTemplate> 
        <DataTemplate> 

         <TextBox /> 
        </DataTemplate> 
       </TabControl.ContentTemplate> 

      </TabControl> 

的TabItems與不同的頁眉創建(我想),但是當用戶鍵入在裏面的ContentTemplate文本框somwthing,相同的文本保存在不同的TabItems,我不想要這個。

我在做什麼錯了?

謝謝!

回答

1

我有同樣的問題bindingpath。這answer幫助了我。我的解決方案是在標籤更改時從文本框中移除焦點。當刪除文本框中的焦點時,新內容會按預期設置爲綁定屬性。

private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     DependencyObject focusedElement = (FocusManager.GetFocusedElement(tabControl) as DependencyObject); 
     if (focusedElement != null) 
     { 
      DependencyObject ancestor = VisualTreeHelper.GetParent(focusedElement); 
      while (ancestor != null) 
      { 
       var element = ancestor as UIElement; 
       if (element != null && element.Focusable) 
       { 
        element.Focus(); 
        break; 
       } 

       ancestor = VisualTreeHelper.GetParent(ancestor); 
      } 
     } 

    } 

或文本框結合使用

Text="{Binding UpdateSourceTrigger=PropertyChanged}" 

0

ContentTemplate中的TextBox沒有綁定。嘗試

<TabControl.ContentTemplate> 
    <DataTemplate> 
     <TextBox Text="{Binding}" /> 
    </DataTemplate> 
</TabControl.ContentTemplate> 

必要時進行調整

+0

如果我這樣做,我在文本框中看到不同的值,但是當我在文本框中寫入新的值時,更改選項卡並返回到原始選項卡我失去了我寫的東西。必須有什麼錯誤:-( – Cris

+0

在綁定屬性中粘貼一個調試斷點......會發生什麼? –

+0

當您運行該程序時,Visual Studio的輸出窗口中是否有綁定表達式Erorrs?可能路徑錯誤。 –