J'ai un contrôle avec une couleur de premier plan de texte blanc et une couleur de fond transparente. Plus tard, sur cette USERCONTROL sera ajouté à un contrôle différent qui porte la couleur de fond réelle.
Cependant, pendant la conception de cela, le contrôle du premier plan blanc sur fond blanc dans VS 2010, je ne peux évidemment rien voir. De toute façon, de toute façon définir une couleur différente pour le moment de la conception? P>
J'ai essayé ceci: p> mais cela ne fonctionne pas. Toute astuce? P> mise à jour: p> Je ne comprends pas comment cela fonctionne pour vous les gars. J'ai créé une nouvelle application Silverlight 4.0 et j'ai inséré cette ligne de code dans le CTOR: p> Quand je vais dans designer, je ne le vois toujours pas comme bleu. Et je n'ai même pas d'état IsindesignTime là-bas. Ce qui me manque ici? P> merci,
Kave p> p>
6 Réponses :
Vous pouvez utiliser le code suivant dans USERCONTROL Constructor:
pour WPF STRY>: P> if (DesignerProperties.GetIsInDesignMode( this ))
{
LayoutRoot.Background = new SolidColorBrush( Colors.Blue );
}
Ce Silverlight est-il compatible? Désolé j'aurais dû dire son Silverlight 4.0
Merci beaucoup. Mais cela ne fonctionne toujours pas de la vue de designer d'UserControl. Cependant, une fois que j'ouvre la vue parent contenant cette vue en mode de concepteur, je peux voir la couleur bleue remplace la couleur réelle. Pourquoi le code temporel de conception de l'enfant n'est-il pas affecté par cela?
Comme vous changez de couleur de fond, je pense que vous devez également mettre en œuvre le même comportement dans d'autres contrôles. Je suggérerais d'utiliser une opacité si vous n'avez besoin que de cacher le contrôle (juste une pensée).
Voici une façon:
#if DEBUG if (System.ComponentModel.DesignerProperties.IsInDesignTool) { LayoutRoot.Background = new SolidColorBrush(Colors.Yellow); } #endif
Merci pour votre réponse. Puissiez-vous lire ma mise à jour dans le poteau? Merci beaucoup pour votre aide
Ajout d'une mise à jour (dernier paragraphe) pour aider à résoudre ce que je crois me passe. Le code de l'UserControl actuellement édité n'exécute pas au moment de la conception. Vous ne verrez jamais le travail «bleu» si vous ne l'avez défini que dans Code-derrière, si le contrôle n'est pas contenue dans un deuxième contrôle.
Une option serait de donner à l'UserControl une couleur d'arrière-plan, puis remplacer cela où vous l'utilisez. Donc, lorsque vous modifiez l'UserControl isolément, il aurait une couleur de fond; Mais lorsque vous émettez un contrôle contenant cet UserControl, vous le verriez avec le fond transparent comme vous le souhaitez.
Donc, le fichier XAML de UserControl ressemblerait à ceci: P>
<my:MyUserControl Background="Transparent" ...>
Bon fil, surtout lorsque vous faites du MVVM le fait que UserControls apparaissent sur blanc quand ils sont transparents est très gênant.
Je suis sûr que vous pourriez le faire en mélange avec un état défini sur la base d'un concepteur, mais je ne pense pas que cela réduirait la quantité de travail. p>
Vous ne savez toujours pas comment éviter le code dans le code derrière et em> évitez de devoir ouvrir un mélange, de sorte que quelqu'un a des suggestions grâce à l'avance pour la publication. P> Je suggérerais d'utiliser l'opacité p>
BlockQuote>
public View() {
InitializeComponent();
var c = Content as Panel;
if (c != null) c.Background = new SolidColorBrush(Colors.Transparent);
}
Une autre approche qui n'implique pas de code: p>
cidre -> Artboardbackground code> strong>" couleur à une couleur différente de votre choix. li>
- yay! : D li>
ol>
Remarque: le champ " cidre -> Artboardbackground" / "> Le champ de thème de couleur est trouvé dans VS2012 mais je ne peux pas confirmer s'il a le même nom dans VS2010 P>
Une autre technique mentionnée dans cette question à cette question consiste à utiliser la propriété non documentée Pour résoudre ceci, sur cette même page Fournissez une solution simple pour le déploiement d'un style de designer uniquement dans un Premièrement, placez le style souhaité dans un dictionnaire XAML de la manière normale. P> alors, Dans le code C #, Supprimez le style du D: designâropersâties.designstyle code> , qui fonctionne bien pour appliquer un style de design-time à un fort> contrôle unique fort>, mais qui ne semble pas fonctionner pour un style
style code> dans un
Dossédictionner qui s'appliquerait à tous les em> des contrôles ou des éléments dacteusement saisis sous la portée du dictionnaire.
dossier code>. Voici un résumé de cette réponse: p>
ResourceÂDictAionary CODE> Lorsque le mode de conception est non fort> détecté em>. Fais ceci est dans le
Oninitialisé code> Remplacement: P>
protected override void OnInitialized(EventArgs e)
{
if (DesignerProperties.GetIsInDesignMode(this) == false)
Resources.Remove(typeof(TreeViewItem));
base.OnInitialized(e);
}
Où avez-vous appelé le code ci-dessus?
Andrei, je l'ai appelé dans la CTOR après l'initializeComonent ()
Le meilleur moyen consiste à définir
D: propriété de conception code> comme décrit dans Cette réponse