2012-12-09 106 views
1

我在shell中定義了兩個區域:MainRegion和ToggleRegion。切換區域包含一個按鈕,點擊那個按鈕我想改變主區域的區域。棱鏡:殼區域視圖更改不反映在xaml視圖

這裏是我在shell中註冊區域的xaml代碼。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*" ></RowDefinition> 
     <RowDefinition Height="30"></RowDefinition> 
    </Grid.RowDefinitions> 

    <ContentControl Grid.Row="0" Regions:RegionManager.RegionName="MainRegion"></ContentControl> 
    <ContentControl Grid.Row="1" Regions:RegionManager.RegionName="ToggleRegion"></ContentControl> 

</Grid> 

我的引導程序添加MainModule我在哪裏的地區

protected override IModuleCatalog CreateModuleCatalog() 
    { 
     var catalog = new ModuleCatalog(); 
     catalog.AddModule(typeof (MainModule)); 
        return catalog; 
    } 

我MainModule類

public void Initialize() 
    { 
     regionManager.RegisterViewWithRegion("MainRegion", typeof(MainView)); 
     regionManager.RegisterViewWithRegion("ToggleRegion", typeof(ToggleView)); 

    } 

注射視圖上運行的應用程序,我能看到的MainView和ToggleView在MainRegion和ToggleRegion裝。但是當我點擊切換區域中的按鈕來改變主區域中的視圖。主要區域視圖不變。

代碼在我的按鈕單擊事件

{ 
    IRegion region = regionManager.Regions["MainRegion"]; 

     var view = region.Views.SingleOrDefault(); 
     region.Remove(view); 
     regionManager.RegisterViewWithRegion("MainRegion", typeof(ViewOnButtonClick)); 
     region.Activate(view); 

}

在調試,我可以看到的區域首先去除的MainView然後激活viewonbuttonclick但同樣沒有在我的XAML視圖反映。

我錯過了什麼?

回答

0

我認爲這個問題是在這裏

var view = region.Views.SingleOrDefault(); 
    region.Remove(view); 
    regionManager.RegisterViewWithRegion("MainRegion", typeof(ViewOnButtonClick)); 
    region.Activate(view); 

我會做的是登記所有前期的觀點..

regionManager.RegisterViewWithRegion("MainRegion", typeof(MainView)); 
regionManager.RegisterViewWithRegion("ToggleRegion", typeof(ToggleView)); 
regionManager.RegisterViewWithRegion("MainRegion", typeof(ViewOnButtonClick)); 

,然後取出,而不是從區域的圖的獲取由視圖視圖名稱你給它..然後激活

 var view = region.Views.SingleOrDefault(v => v != null && v.GetType() == typeof  (ViewOnButtonClick); 

     region.Activate(view); 
+0

早些時候我也是這樣做的,但也沒有給出我的結果。事實上,當我停在只是region.Remove(查看)在主區域內沒有視圖。地區沒有看到空,但同樣沒有反映在我的XAML殼。這真讓我抓狂。 – Sunil

0

問題是我的Bootstrapper類。我啓動應用程序是這樣的: -

protected override DependencyObject CreateShell() 
    { 
     Shell shell = new Shell(); 
     Application.Current.MainWindow = null; 
     Application.Current.StartupUri = new Uri("Shell.xaml", UriKind.RelativeOrAbsolute); 
     return (DependencyObject)shell; 
    } 

使用shell.show(),而不是current.startupuri讓我改變按鈕點擊美景。