2013-08-04 3 views
0

Dans mon application, j'essaie de charger le code creux du module principal. Tout fonctionne jusqu'au rendu et je n'ai aucune idée de pourquoi il n'est pas rendu. Le contenu a les bonnes valeurs et tout .. Je suppose que quelque chose est allé wibbly bancal et il me semble être manquant.Module non rendu

de contrôle qui maintient la vue

[ContentPropertyAttribute("ContentView")] 
public class ContentControlExtened : ContentControl 
{ 
    public static readonly DependencyProperty ContentProperty = 
     DependencyProperty.Register(
      "Type", 
      typeof(Type), 
      typeof(ContentControl), 
      new FrameworkPropertyMetadata(null, ContentTypeChanged)); 

    public static readonly DependencyProperty ContentViewProperty = 
     DependencyProperty.Register(
      "View", 
      typeof(FrameworkElement), 
      typeof(ContentControl), 
      new FrameworkPropertyMetadata(null, ContentViewChanged)); 

    private static void ContentViewChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     //throw new NotImplementedException(); 
    } 

    public ContentControlExtened() 
    { 
     this.Loaded += ContentControlLoaded; 
    } 

    private void ContentControlLoaded(object sender, RoutedEventArgs e) 
    { 
     this.LoadContent(); 
    } 

    private void LoadContent() 
    { 
     UserControl u = null; 

     if (Type != null) 
     { 
      u = (UserControl)ServiceLocator.Current.GetInstance(this.Type); 
     } 
     u.Background = new SolidColorBrush(Color.FromRgb(0, 0, 255)); 
     this.View = u; 
    } 

    public Type Type 
    { 
     get { return (Type)GetValue(ContentProperty); } 
     set { SetValue(ContentProperty, value); } 
    } 

    public FrameworkElement View 
    { 
     get { return (FrameworkElement)GetValue(ContentProperty); } 
     set 
     { 
      SetValue(ContentProperty, value); 
     } 
    } 
    } 

Procédé coque pour charger l'écran principal de la donnée ModuleInfo

 private void OpenMainView(ModuleInfo module) 
    { 
     Type moduleType = Type.GetType(module.ModuleType); 
     var moduleMainViewType = moduleType.Assembly.GetType(moduleType.Namespace + ".Views.MainView"); 
     this.ContentHolder.MainContent.Type = moduleMainViewType; 
    } 

Le contructor du MainView est simple. Le contrôle standard InitializeComponent() et Datacontext sont en cours de définition dans le servicelocator.

+0

'Getter' et' Setter' pour vous DP est manquant. –

+0

Ils sont là n'ont pas pris la peine de les poster parce que ce n'est pas le problème :) –

+0

Qu'est-ce que ContentType? Je suppose que quelque chose ne va pas avec vos DP. –

Répondre

0
public FrameworkElement View 
{ 
    get { return (FrameworkElement)GetValue(ContentProperty); } 
    set 
    { 
     SetValue(ContentProperty, value); 
    } 
} 

Ici, vous obtenez et définissez ContentProperty. Il devrait être ContentViewProperty.

+0

Oui vrai lol un peu échouer mais le module n'est toujours pas rendu –