2010-02-15 28 views
10

Küçük uygulamam için bir MVC tasarımını denemek istiyorum.Kullanıcı denetimi, UserControl öğesini genişleten bir sınıfı nasıl genişletebilirim?

UserControl'ü genişleten normal Csharp sınıfı ViewBase'im var. Tek bir .cs dosyası.

ViewBase'i genişletmek istediğim birden çok sınıfa sahibim. Bunlar gerçek UserControl'lerdir, böylece .cs dosyası ve bir .xaml dosyasının arkasında bir kodları vardır. Bununla birlikte, CSharp bana bu sınıflar için taban sınıflarının "diğer bölümlerde beyan edilenlerden farklı olduğunu" söyler.

Yapmak istediğim şey bu mu? Neyi yanlış yapıyorum?

XAML dosyalarımı değiştirmediğimi ve etiket kullanmaya devam ettiğimi unutmayın.

İlgili kod geçerli:

// This gives the error in question and ViewBase is underlined 
// "Base class of LoginView differs from declared in other parts" 
public partial class LoginView : ViewBase { 
    public LoginView(Shell shell, ControllerBase controller) : base(shell, controller) { 
     InitializeComponent(); 
    } 
} 

// This one is a single .cs file 
public abstract class ViewBase : UserControl { 
    public Shell Shell { get; set; } 
    public ControllerBase Controller { get; set; } 

    protected ViewBase(Shell shell, ControllerBase controller) 
    { 
     Shell = shell; 
     Controller = controller; 
    } 
} 

cevap

21

Not benim XAML dosyalarında değişiklik olmadı, bu yüzden hala etiketleri sorununuzu var

kullanın.

<UserControl ...> 
    ... 
</UserControl> 

sorun tek bir yerde (.cs dosyası) ve UserControl içinde sizi ViewBase devralmasını derleyici söylüyorsun edilir

<local:ViewBase xmlns:local="clr-namespace:..." 
    ... 
</local:ViewBase> 

için: Sen değiştirmeniz gerekecektir başka bir ( . xaml dosya).

+0

Çok teşekkür ederim! –

+0

Bu biraz ayrıntıya ihtiyaç duyar –

İlgili konular