Bonjour

Mon petit soucis est le suivant, je viens de développer un "contrôle personnalisé wpf" pour un de mes projets qui est composé d'un calendar lié à l'événement "SelectedDatesChanged".

J'ai ainsi codé la fonction lui correspondant dans le fichier .cs de mon contrôleur.

Lors de la compilation j'obtiens l'erreur suivante me demandant de rajouter un attribut x:Class="".

Erreur de génération inconnue, 'MC6024*: l'élément racine 'ResourceDictionary' nécessite un attribut x:Class pour prendre en charge les gestionnaires d'événement du fichier XAML. Supprimez le gestionnaire d'événement de l'événement SelectedDatesChanged ou ajoutez un attribut x:Class à l'élément racine.

Voici le code wpf de mon dictionnaire de ressources (pour mes contrôleurs perso):

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit"
    xmlns:local="clr-namespace:TIMETABLEASY.EasyCalendar.Controler">
 
    <Style TargetType="{x:Type local:TimeTable}" x:Class="">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:TimeTable}">
                    <Grid>
 
                        ...
 
                        <Grid Grid.Row="1" Margin="0,-22.5,0,0">
                            <Expander Header="2010" Margin="470,0,0,0" Name="date_expander" Height="177.76" VerticalAlignment="Top" HorizontalAlignment="Left" Width="186.633">
                                <Grid Height="158" Margin="-79,0,0,0">
                                    <my:Calendar Name="week_select_calendar" SelectionMode="SingleRange" SelectedDatesChanged="week_select_calendar_SelectedDatesChanged"
                                                 Margin="-1,0,2.096,0" Height="157.982" VerticalAlignment="Top" />
                                </Grid>
                            </Expander>
                        </Grid>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
 
...

Voici le code ma classe correspondant au contrôleur en question :

Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
 
...
 
namespace TIMETABLEASY.EasyCalendar.Controler
{
    public class TimeTable : Control
    {
        static TimeTable()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(TimeTable), new FrameworkPropertyMetadata(typeof(TimeTable)));
 
            ...
 
        }
 
        private void week_select_calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
        {
            MessageBox.Show("Test SelectedDatesChanged event ok");
        }
 
    }
}

J'ai tenté plusieurs tentatives avec le x:Class aboutissant à des erreurs une fois de plus, je saisi pas réellement ou il faut le mettre.

Pour ma part je l'avais rajouter dans l'entête avec les autres ressources (x:Class="TIMETABLEASY.EasyCalendar.Controler.TimeTable") mais ça rentre en conflit avec mon local:.... .

Ce que j'aimerai maintenant c'est trouver une solution pour lier un événement entre le contrôleur wpf et sa classe.

Merci d'avance pour toutes aides,

Myzha