Je pense que ce que vous demandez est que vous voulez un fichier code-behind pour un ResourceDictionary. Vous pouvez tout à fait le faire ! En fait, vous le faites de la même manière que pour une fenêtre :
Disons que vous avez un ResourceDictionary appelé MyResourceDictionary. Dans votre fichier MyResourceDictionary.xaml, mettez l'attribut x:Class dans l'élément Root, comme suit :
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MyCompany.MyProject.MyResourceDictionary"
x:ClassModifier="public">
Ensuite, créez un fichier de code derrière appelé MyResourceDictionary.xaml.cs avec la déclaration suivante :
namespace MyCompany.MyProject
{
partial class MyResourceDictionary : ResourceDictionary
{
public MyResourceDictionary()
{
InitializeComponent();
}
... // event handlers ahead..
}
}
Et vous avez terminé. Vous pouvez mettre ce que vous voulez dans le code qui se trouve derrière : méthodes, propriétés et gestionnaires d'événements.
\== Mise à jour pour les applications Windows 10 ==
Et juste au cas où vous joueriez avec UWP il y a encore une chose dont il faut être conscient :
<Application x:Class="SampleProject.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:rd="using:MyCompany.MyProject">
<!-- no need in x:ClassModifier="public" in the header above -->
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- This will NOT work -->
<!-- <ResourceDictionary Source="/MyResourceDictionary.xaml" />-->
<!-- Create instance of your custom dictionary instead of the above source reference -->
<rd:MyResourceDictionary />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
1 votes
La manière correcte de procéder est d'utiliser une commande, qui vous donne également la possibilité d'activer et de désactiver le bouton, bien que vous puissiez le faire de la manière suggérée dans certaines réponses, cela me semble être un piratage.