Archives Catégorie: Windows Store

Facile et rapide: Définir la taille d'un éléments dans une zone de liste dans une application Windows Store

Je crée dans une application Windows Store..., Je veux montrer à l'utilisateur des messages d'information diverses.  J'ai pris un ListBox comme outil pour le montrer afin qu'ils peuvent défiler à travers eux et tout ce que de bonnes choses. 

Les messages sont uniquement à but informations, Il n'y a donc pas lieu de prévoir tout ce supplément espace blanc autour d'eux car l'utilisateur peut les sélectionner jamais pour quoi que ce soit.  Le comportement par défaut du contrôle ListBox fournit une quantité importante de rembourrage et je voulais me débarrasser de celui-ci.  Eh bien.... vous ne pouvez pas faire ce genre de chose sur la zone de liste directement.  CEPENDANT, vous pouvez le faire pour les éléments que vous ajouter:

        privé VOID AddGameStateLogMessage(chaîne Lemessage)
        {
            TextBox t = Nouveau TextBox();
            t.Text = GameStateCounter    + ": " + Lemessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Épaisseur thisPadding = Nouveau Épaisseur(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem li = Nouveau ListBoxItem();
            néantContent = t;
            Li.MaxHeight = 25;
            thisPadding = Nouveau Épaisseur(5, 0, 5, 0);
            Li.Rembourrage = thisPadding;

            GameStateLog.Items.Insert(0,Li);
        }

dans ce qui précède, Je suis créant une zone de texte et en définissant ses polices, son rembourrage, etc..

Prochaine, J'ai créer un ListBoxItem et définissez son contenu à la zone de texte mis en forme.

Enfin, J'insère le ListBoxItem dans le ListBox.  (Je veux montrer les messages plus récents en haut de la liste, C'est pourquoi l'Insert(0,Li) au lieu d'un simple Add() invocation.).

Je va être peaufiner cela un peu avant que je suis vraiment heureux avec le comportement du contrôle ListBox, mais le modèle illustré ci-dessus a été très fructueux.  J'espère que quelqu'un d'autre estime qu'il est utile.

</fin>

undefinedS'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Facile et rapide: Déplacer un Rectangle en utilisant c# dans une appli Windows Store

Ma philosophie globale de blog, c'est qu'il est parfaitement bien pour blog sur les vieux, réglé des sujets qui ont été couverts à mort ailleurs.  Je suppose que ce sujet est un de ces, mais je suis blogging il toute façon.

J'ai travaillé sur un app store de fenêtre, et je suis à la partie où je dois faire une animation.  À cette fin, J'ai été figurant des bouts et de stockent des morceaux de windows animation app qui, Il s'avère que, est assez proche de, mais pas exactement comme, Animations de XAML basé dans .NET (Je suis encore à venir à bout avec le fait que WinRT <> .NET 🙂 ).

Ce matin j'ai voulu obtenir une poignée sur le glisser et déposer des opérations.  En route vers qui, Je me suis embourbé déplacer un rectangle à la place :).  Voici le code qui déplace un rectangle lorsque l'utilisateur clique sur un bouton:

   1:   
   2:              MatrixTransform ct = (MatrixTransform)rectBig.RenderTransform;
   3:              Matrice m = ct.Matrice;
   4:              m.OffsetX  = 10;
   5:              m.OffsetY  = 10;
   6:              CT.Matrice = m;
   7:              rectBig.RenderTransform = ct;

L'astuce ici est que je ne peux pas changer directement OffsetX ou OffsetY.  Il peut y avoir un moyen plus astucieux de le faire (et si vous connaissez et que vous sentez comme, Merci de poster dans les commentaires). 

Pour ce faire, J'ai besoin de:

1. Obtenez le MatrixTransform du rectangle (en effectuant un cast RenderTransform).

2. Récupère la matrice de ce gars.

3. Changer les décalages de la matrice.

4. Réaffecter la matrice à MatrixTransform.

5. Réaffecter le MatrixTransform retour au Rectangle.

Pour le tester, J'ai mis un rectangle et bouton à l'écran. Lorsque je clique sur le bouton, la logique ci-dessus s'exécute et déplace le rectangle immédiatement.

À un certain moment, J'aimerais animer cela mais je n'ai aucune idée de comment obtenir une DoubleAnimation pour travailler dessus (Storyboard.SetTargetProperty() fait d'être un mystère pour moi là-dessus pour le moment).

</fin>

undefinedS'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Paramètre la hauteur de ListboxItems dans une zone de liste par programme pour App Store de Windows

Je travaille sur une application de windows store et une des choses que je veux faire dans le soft est un journal qui affiche les messages d'État et autres bribes d'information que l'utilisateur travaille choses d'affichage. À cette fin, J'ai ajouté un ListBox comme suit:

<ListBox x:Nom ="GameStateLog" HorizontalAlignment ="Centre" Hauteur ="221" VerticalAlignment ="Retour au début" Largeur ="499" Rembourrage ="0" FontSize ="10">

 

Le code c# pour remplir la zone de liste lors de l'exécution a été le long des lignes de:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Nouveau jeu de l'État: attente pour joueur 1 nom");

Cela a fonctionné très bien, assez, mais l'interface utilisateur a montré une quantité folle de rembourrage autour des messages individuels, ils ont été ajoutés. C'est logique, si je veux des utilisateurs finaux pour pouvoir sélectionner ces éléments, mais ne fait pas de sens quand je veux juste montrer une série de messages du journal-les utilisateurs ne sélectionnent ces, Tout afficher. Il était étrangement difficile de trouver un moyen facile de le faire et sans doute, la façon dont je l'ai trouvé n'est pas nécessairement « facile », mais j'ai eu fonctionne OK. L'idée clée provenait de cette annonce ici (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) de Bob Relyea. Au lieu d'ajouter des chaînes à la collection d'éléments dans ListBox, Ajouter ListBoxItems. En ajoutant une chaîne, la zone de liste créait sa propre ListBoxItem sur ses propres. Je n'étais pas en mesure d'affecter quelque chose que ListBoxItem après coup. Le nouveau code est:

        privé VOID AddGameStateLogMessage(chaîne Lemessage)
        {
            ListBoxItem li = Nouveau ListBoxItem();
            Li.Content = lemessage;
            Li.MaxHeight = 25;

            Épaisseur thisPadding = Nouveau Épaisseur(5, 0, 5, 0);
            Li.Rembourrage = thisPadding;

            GameStateLog.Items.Insert(0,Li);
        }

 

Ici je suis la création de ListBoxItem et en les insérant. J'ai enlevé le rembourrage excès en définissant son épaisseur.

C'est assez souple car je ne veux pas faire quelque codage en couleurs pour mettre en évidence certains types de messages et en ajoutant directement ListBoxItems, j'arrive à leur style tout comme je le veux.

Espérons que cela aide quelqu'un!

</fin>

undefinedS'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin