2013-11-22 54 views
0

在我的項目中,我已修復頁眉&頁腳和可更改的內容。所以我把ContentControl放在了我的窗口中。如何更改WPF中的內容控件內容?

<Grid> 
     <Canvas Name="canvas_Logo" HorizontalAlignment="Center" VerticalAlignment="Top" Width="180">    
      <Image Source="Images/k1.png" Grid.Row="1" Width="180" /> 
     </Canvas> 
     <ContentControl VerticalAlignment="Center" Name="CC1" Grid.Row="2" Height="450"/> 
     <Canvas x:Name="canvas_Marque" ClipToBounds="True" Height="60" HorizontalAlignment="Center" VerticalAlignment="Bottom" Width="1022" Background="DarkRed" /> 
    </Grid> 

它看起來就像這樣......

enter image description here

我已創建兩個用戶控件的名稱第1頁,第2頁。第1頁有一個按鈕,當我點擊按鈕時,ContentControl顯示page2。

,所以我有寫的button1_Click

MainPage n = new MainPage(); 
n.CC1.Content = new Page2(); 

但在按鍵的時候下面的代碼,點擊ContentControl中沒有改變我能爲這做什麼?

我的第1頁XAML

<Grid Background="AliceBlue"> 
     <Label Content="Child1" Height="28" HorizontalAlignment="Left" Margin="74,65,0,0" Name="label1" VerticalAlignment="Top" Width="157" /> 
     <Button Content="load page2 and destroy this" Height="31" HorizontalAlignment="Left" Margin="79,124,0,0" Name="button1" VerticalAlignment="Top" Width="186" Click="button1_Click" /> 
    </Grid> 

第2頁XAML

<Grid Background="CadetBlue"> 
     <Label Content="This is page 2" Height="28" HorizontalAlignment="Left" Margin="96,82,0,0" Name="label1" VerticalAlignment="Top" Width="148" /> 
    </Grid> 

如何改變在WPF的內容控制內容?

回答

2

啊,我的朋友......我們再次見面......很高興見到你在你的項目取得進展...

現在,我的下一個建議是:不要做這些事後面的代碼...讓XAML綁定到它的工作...

通常,使用MVVM,您將擁有內容控制源綁定到基本視圖模型類型的屬性。所以,讓我們假設VM1VM2都擴展BasicViewModel,並且您已經定義了這樣的特性:

Public BasicViewModel Current_VM {get;set;} 

現在,當你想交換所有你需要做的,就是改變從VM1Current_VMVM2,和綁定將完成剩下的工作,將你的窗口更新到正確的視圖(假設你有數據模板設置..但你從來沒有說過,如果你使用MVVM或不...)

+0

http://stackoverflow.com/questions/16855352/changing-content-dynamically-in-wpf-window在這裏,我得到了這個想法。它看起來很簡單。你可以請通過併爲我的問題提供一個簡單的解決方案。 – Sagotharan

+0

這與您之前的問題[我的回答](http://stackoverflow.com/a/20113543/1698987)完全相同。你所要做的就是按照我的建議使用它,而我的屏幕截圖顯示了那裏的結果(用戶控件只有一個帶有藍色背景的標籤,表示「來自用戶控件的嗨」)。 – Noctis

0

你不能實例化一個新的MainPage從Page1 UserControl,因爲MainPage已經是Page1的主機(如果我理解你的話)。如果您要從代碼管理頁面(而不是最佳實踐參考@Noctis)中進行管理,那麼在這種情況下,您必須從MainPage.xaml.cs中完成所有工作。然後您必須找到某種方法將參數傳遞迴MainPage以更改內容。 通常這是在ViewModel中完成的,正如@Noctis所說。