2011-09-24 61 views
3

我遇到問題。 在我的WPF應用程序中,如果我用鼠標中鍵按TabItem,這個tabItem應該關閉。就像在FireFox中一樣。 但我嘗試使用MVVM來做到這一點,我需要使用命令。此外我的tabItems是動態創建的。 幫我看看! 謝謝!通過單擊中間按鈕來關閉TabItem

回答

6

爲您的標籤項DataTemplate這樣的:

<DataTemplate x:Key="ClosableTabTemplate"> 
    <Border> 
    <Grid> 
     <Grid.InputBindings> 
     <MouseBinding Command="ApplicationCommands.Close" Gesture="MiddleClick" /> 
     </Grid.InputBindings> 
     <!-- the actual contents of your tab item --> 
    </Grid> 
    </Border> 
</DataTemplate> 

在應用程序窗口中,添加一個關閉命令

<Window.CommandBindings> 
    <CommandBinding Command="ApplicationCommands.Close" Executed="CloseCommandExecuted" CanExecute="CloseCommandCanExecute" /> 
</Window.CommandBindings> 

最後的數據模板項目模板分配給你的標籤控制。

+0

當我處理CloseCommandExecuted時,e.Source返回一個TabControl對象。我如何獲得TabItem對象? – Brandon

0

您可以添加MouseBinding某些InputBindings也許?

+0

我的tabItems是動態創建的。我應該在代碼後面添加一個mouseBinding嗎? – Yevgeniy

+0

@Yevgeniy:這將是一個選項,不幸的是,這不能通過樣式完成... –