J'ai deux styles différents pour ma fenêtre: p>
La fenêtre est trop large pour l'un des moniteurs de ma machine de développement, mais c'est un ajustement parfait pour la machine cible / install. Donc, lors du débogage, j'ai besoin de pouvoir déplacer la fenêtre afin que je puisse tout voir, mais lorsque je libère l'application, j'en ai besoin de fonctionner dans le mode "Plein écran" (comme une application PowerPoint en mode projecteur). p>
Y a-t-il un moyen de définir la propriété code> style code> de la fenêtre sur la base de la compilation du mode de débogage par rapport à la libération? Je pensais que je pourrais être capable d'utiliser une liaison, mais je ne suis pas tout à fait sûr de la mettre en œuvre. P>
6 Réponses :
Il peut être difficile de le faire dans XAML, mais dans le code réel, vous pouvez simplement faire quelque chose comme: pourquoi ne pas mettre cela quelque part qui sera exécuté après que le code XAML normal ait été exécuté? p> p>
J'ai suivi cela et c'est une approche qui fonctionne. J'ai trouvé que le code était windowstyle = windowstyle.singleborderwindow code> comme le code n'a pas fonctionné pour moi
Pourriez-vous utiliser un numéro de débogage #IF pour définir une propriété sur une valeur différente et leur lier?
Peut-être p>
#if DEBUG style = 0; #else style = 1; #endif
Battus par M. Skeet et son plus gentil, aussi! Mince!
Vous pouvez créer une extension de balisage comme celle-ci:
<Window ...
xmlns:my="clr-namespace:MyNamespace"
Style="{my:DebugStyle DebugResourceKey=DebugStyle, ReleaseResourceKey=NormalStyle}">
J'aime ça, mais cela ne compilera pas: une référence d'objet est requis pour le champ non statique de champ, de méthode ou de propriété 'system.windows.application.findresource (objet)' code> le code incriminé est application.findresource code>. Ce fichier de classe doit-il être dans la même assemblée que mon application? THX.
Je viens de corriger le code ( application.current.findresource code> plutôt que application.findresource code>)
Il peut être dans la même assemblée ou dans une autre. S'il s'agit d'un assemblage différent, vous devez spécifier le nom de l'assemblage dans la déclaration XMLNS.
Merci de la réparatrice. Je remarque un autre problème, même si je ne pense pas que cela ait quelque chose à voir avec votre code. La ligne de code immédiatement après le #else code> apparaît dans le texte gris et ne répondant pas à IntelliSense. Une idée de ce qui pourrait causer cela? Merci encore.
C'est parce que vous êtes en mode de débogage. L'éditeur sait que ce code ne sera pas compilé (car le symbole de débogage est défini), il le montre donc «code désactivé».
Ohh :) Cela a beaucoup de sens, sauf que je ne comprends pas pourquoi Intellisense ne fonctionnerait pas.
Je suppose que l'éditeur le gère comme une section "NON Code", comme des commentaires ... Si vous souhaitez modifier cette pièce, passez au mode de publication;)
Vous pouvez faire une compilation conditionnelle dans le fichier XAML ainsi que le codeBeHind. Consultez cet article
essentiellement, vous Faites-le comme ça dans vos propriétés \ assembléesInfo.cs: p> Ajoutez votre XMLNS au fichier * .xaml: p> <mc:Choice Requires="beta">
<Label>
This is ALPHA software. Confidential.
Internal use only. Do not distribute
<Label>
</mc:Choice>
À titre de note latérale, la xmlnsdefinition a été ajoutée à Silverlight à la version 4
L'article est cassé malheureusement
Il existe un certain nombre de tutoriels alternatifs à l'article lié. Utilisez simplement votre recherche Internet préférée pour rechercher http://schemas.openxmlformats.org/markup-compatibilittibilité/2006 code> i> et "compilation conditionnelle".
Créer une classe de sélection de style: dans votre app.xaml
Ajouter à votre application.Resources Votre style de débogage et de libération + une instance de STYSTERPICKER et définissez le relevage et le debugstyle sur les styles de configuration précédents: p> dans votre jeu de balisage de la fenêtre up the windowstyle comme ceci: p> Vous pouvez réutiliser le débogreleasestestypicker pour définir le style sur n'importe quel autre contrôle non seulement la fenêtre. P> P>
J'aime beaucoup la flexibilité de cette solution. Je pouvais voir utiliser une technique similaire dans d'autres domaines. Merci!
Beaucoup de réponses utiles ... j'ai pensé à une autre idée que je pensais jeter là-bas: un convertisseur de valeur plus une liaison:
Voici le convertisseur de valeur: strong> p> voici ma déclaration de fenêtre: strong> p> Donc, ce qui se passe ici est que je passe une référence à la fenêtre elle-même dans le convertisseur de valeur et renvoie le style approprié. P> P>