2011-02-16 121 views
1

我試圖設計一個包含嵌套選項卡的UI,但我似乎無法找到有關如何以MVVM方式刪除嵌套選項卡的信息。使用WPF關閉嵌套選項卡?

這是我的XAML(剪斷,爲了簡潔):

<TabControl Name="ProjectTabControl" DockPanel.Dock="Top" ItemsSource="{Binding ProjectTabs}" IsSynchronizedWithCurrentItem="True"> 
    <TabControl.ContentTemplate> 
     <DataTemplate> 
     <TabControl DockPanel.Dock="Top" ItemsSource="{Binding FileTabs}" Padding="1"> 
      <Button Command="{Binding CloseTabCommand}" CommandParameter="TabItem" /> 
     </TabControl> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 

我的問題是:什麼樣的參數(?S)我應該傳遞CommandParameter了,我怎麼會影響它在視圖模型正確取出標籤?

回答

1

它看起來並不像你對如何在WPF中實現M-V-VM模式有深刻的理解。看起來您知道理解DataBinding,但示例演示的模式似乎缺少對MVM真正需要的ViewModels和Commands的理解。

查看下面鏈接的文章以及它使用的示例應用程序。你應該發現你想要做的事情在這裏展示,並且很容易實現。

The Model-View-ViewModel (MVVM) Design Pattern for WPF

我希望這似乎不是一種逃避,但它需要鏈接的文章重新發布的顯著量來把你帶到你想要去的。閱讀文章,通過樣本工作,如果你仍然有問題,發佈這個問題,我會一定要注意它。

+0

感謝您的回覆!我承認 - 我對這一切都很陌生。 我已經閱讀過幾篇文章,但對於大多數概念的新手來說,這有點嚇人。 我發現了這個,這對於將Josh Smith的工作翻譯成非專業人士的說法非常有幫助:http://codingtales.com/2010/02/06/Creating-a-Complete-Tabbed-Interface-in-WPF-using- MVVM /。 – Quintalea

+0

我認爲讓我最困惑的概念是View向ViewModel傳遞信息的正確方法。我一直在使用CommandParameter,但似乎並不是正確的應用程序。上面的文章似乎表明它通過偵聽OnPropertyChanged來完成,但我似乎無法弄清楚如何在MVVM Light中使用OnPropertyChanged。對不起,正如我所說,我對這整個過程完全陌生。 – Quintalea

+0

對垃圾評論發表評論。好吧,我的代碼使用我提到的文章工作,設置了一個事件處理程序,一個適當的命令綁定和一個變量來中繼選定的標籤索引。我現在的問題是:設置嵌套選項卡是否在每個工作區都有一個事件處理程序(一個在ProjectTabs中,另一個在FileTabs中分別處理集合),或者是處理事件處理程序的正確方法來自兩組標籤的呼叫?對不起,我有點失落。 – Quintalea