7 votes

Sous-classement de la fenêtre WPF

J'ai créé une fenêtre WPF

que j'ai modifié sa définition de classe en :

public partial class myWindow : mySubclassedWindow

le compilateur lance :

"Les déclarations partielles de 'myWindow' ne doivent pas spécifier des classes de base différentes"

maFenêtre.Xaml :

x:Class="WpfGridtest.myWindow"

Donc, quelque part, il y a une autre classe partielle, qui hérite de "Window" mais je ne la trouve pas. Comment puis-je modifier mon cas pour utiliser une fenêtre sous-classée ?


Merci Jon, c'était le problème. J'ai également trouvé cet article utile : http://geekswithblogs.net/lbugnion/archive/2007/03/02/107747.aspx

10voto

Jon Skeet Points 692016

Ce serait dans la déclaration de myWindow le concepteur génère l'autre moitié du type partiel en fonction du XAML, sur la base de votre type d'élément.

Vous pouvez utiliser un élément de <mySubclassedWindow> à la place, tant que vous lui donnez les références appropriées d'espace de nom et d'assemblage.

EDIT : Ok, voici donc un petit exemple, dans un projet appelé WpfApplication. Mon Window sous-classe :

using System.Windows;

namespace WpfApplication
{
    public class EnhancedWindow : Window
    {
    }
}

Mon XAML :

<y:EnhancedWindow x:Class="WpfApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:y="clr-namespace:WpfApplication"
        Title="MainWindow" Height="350" Width="525">
</y:EnhancedWindow>

Mon type partiel :

namespace WpfApplication
{
    public partial class MainWindow : EnhancedWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

Tout se construit sans problème. Je pense que c'est ce que tu voulais faire, non ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X