2013-08-04 143 views
0

在我的應用程序中,我試圖加載主模塊槽代碼。一切工作到渲染點,我不知道爲什麼它不呈現。內容有正確的價值觀和一切。我的猜測是,有些東西變得脆弱,我似乎錯過了它。保持該視圖模塊不渲染

[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); 
     } 
    } 
    } 

法在殼

控制加載的給定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; 
    } 

主視圖MAINVIEW的構造器是直線前進。標準控件InitializeComponent()和Datacontext正在通過servicelocator設置。

+0

'Getter'和'Setter'你DP缺失。 –

+0

他們在那裏只是沒有打擾張貼他們,因爲那不是問題:) –

+0

什麼是'ContentType'?我猜你的DP有些問題。 –

回答

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

在這裏你得到和設置ContentProperty。它應該是ContentViewProperty

+0

是的真正大聲笑有點失敗,但該模塊仍然沒有渲染 –