2013-10-16 104 views
0

我正在研究一個只有ContentControl元素的主窗口的程序。 在這個主窗口的類中,我可以通過ContentHolder.Content = new UserControlMain()更改內容。在UserControlMain中,我有一個按鈕來再次將窗口的內容更改爲新的用戶控件。從按鈕中更改窗口的內容單擊用戶控件

我遇到了第二次更改窗口內容的問題。如果我沒有例示一類MainWindow,我不能從除它自己的類以外的任何地方訪問Content屬性。我也無法訪問我與該類關聯的ContentControl元素。但是,如果我實例化MainWindow對象,則會遇到錯誤消息,指出內容已被設置。

有關如何解決此問題的任何提示?

+0

你可以發佈一些代碼嗎?我也遇到了同樣的問題。我能夠通過使用MEFedMVVM框架來實現它。順便說一句,您可以通過使用簡單的技巧來公開ContentControl。給xaml中的ContentControl一個名稱x:Name =「_ contentControl」,然後在後面的代碼中使用一個公共屬性「public ContentControl ContentContainer {get {return _contentControl;}}」 – Sandesh

+0

如何將contentcontrol的內容綁定到某些屬性,並改變你在這個屬性中需要的東西。 – Programmer

+0

@ user2760623我通過使用MEFedMVVM來做到這一點。在該框架中有一個NavigationHelper。這裏是[鏈接] http://marlongrech.wordpress.com/2011/08/27/mefedmvvm-navigationextension/。然後我這樣做,從一個按鈕的ContentControl目標NavigationExtensions.NavigationHost =「{Binding RelativeSource = {RelativeSource模式= FindAncestor,AncestorType = {x:類型窗口}},Path = ContentContainer} – Sandesh

回答

0

我的建議是:

在主窗口創建一個網格的名稱

<Grid name = "mainGrid"> 

</Grid> 

然後,在後面的代碼,你可以很容易地這樣做:

mainGrid.Children.Clear(); 
mainGrid.Children.Add(new UserControlMain()); 

問候,

相關問題