11
votes

Comment utiliser la toile en tant qu'Orospanel pour un articleControl dans Silverlight 3

J'essaie de définir les propriétés de la toile dans un fichier de données d'articlesControl avec Silverlight 3. Selon Ce message , la seule façon de le faire est de la définir à l'aide des élémentsContainerStyle pour le type de contenuPresenter, car les propriétés de la toile ne prennent effet que sur les enfants directs de la toile. Cela ne semble pas fonctionner dans SL3, puisque l'itemSControl n'a pas de propriété d'articlesContainerstyle, j'ai donc essayé une liste de liste comme indiqué par Cet article , mais cela ne fonctionne toujours pas. Depuis le XAML ci-dessous, je m'attendrais à voir une place verte, avec les numéros 10, 30, 50, 70 en cascade de "NW" dans la direction "SE". Quelqu'un peut-il me dire pourquoi ils sont tous empilés sur eux dans le coin nw? XXX


1 commentaires

Merci SKB, cela a répondu à ma question, comment faire cela dans WPF :-) Comme vous le dites, cela fonctionne bien dans WPF.


4 Réponses :


7
votes

Je ne suis pas sûr que cela fonctionnera dans votre scénario, mais je l'ai accompli dans le passé à l'aide du rendutransform.

public void ConvertTo(object value, ...)
{
    int intValue = int.Parse(value.ToString());

    return new TransformGroup()
    {
        Children = new TransformCollection()
        {
            new TranslateTransform { X = intValue, Y = intValue }
        }
    };
}


1 commentaires

+1 Dans le scénario présenté, cela fonctionne assez bien. Mettez-le dans ScrollViewer ou StackPanel qui n'est pas assez gros que les problèmes commencent à la surface. Mais la seule autre chose que vous pourriez faire est d'aller tout le porc et d'écrire un panneau personnalisé afin que le comportement souhaité puisse être livré dans la mesure et organiser des phases.



0
votes

Je ne peux pas expliquer ce que vous voyez non plus. Votre XAML est cassé à au moins quelques façons.

Premier, le XAML est en panne parce que ceci: - xxx

doit être xxx < / Pré>

Les conteneurs d'élément dans le cas de Listbox sont de type listboxItem qui dérive de contentcontrol .

Néanmoins sans que la mise en place {la liaison} dans des sets de style ne fonctionne toujours pas. Je suppose que vous imaginiez que le style serait appliqué à chaque élément à tour de rôle et obtenez sa valeur de l'élément actuel. Cependant, même si la liaison a travaillé dans le style, il n'y aurait un style et il obtiendrait sa liaison de données à partir de la liste dataContext . Il s'agit d'un DataContext différent qui s'applique à chaque élément de liste de liste (qui, dans ce cas, chaque élément de la collection d'éléments).

toujours je pense que Ben a une solution raisonnable en place qui Élimine cette approche.


3 commentaires

Bonjour Anthony, je suis peut-être mal interprété de votre réponse, mais de ce que je peux dire à peu près tout ce que vous avez écrit ici est inacaturé. Premièrement, le XAML n'échoue pas à cause du type cible, il échoue en fait si vous faites le changement que vous suggérez. Deuxièmement, la liaison dans le style fonctionne. Troisièmement, la liaison ne prend pas son contexte dans la liste de liste, il le prend à partir de l'élément de la liste de liste. Quant qu'il ne s'agit que d'un style que je soupçonne que le style se fait cloné. La solution importante ici est la solution présentée au début fonctionne, je l'utilise dans WPF, cela ne fonctionne tout simplement pas à Silverlight.


@Mikekulls: Oui, vous me faites mal à me disputer;). Permettez-moi de commencer par la deuxième de vos objections car c'est la source réelle du malentendu. J'adore "Placer {Binding} dans des Setteurs de style toujours ne fonctionne pas travail" et "Même si Binding a fonctionné". À partir de ce moment-là, tout son hypothétique parce que comme vous le dites que cela ne fonctionne pas. Hypothétiquement si la liaison a été résolue à ce point la propriété du style serait liée à cette valeur commune (NB pas la liaison elle-même) et serait utilisé à tous les articles. Enfin, même si Tout le reste a fonctionné, la cibletype est incorrecte.


Mais la solution fonctionne (où ai-je dit que cela ne fonctionne pas?), La liaison fonctionne dans le style. J'utilise cette solution presque comme une copie passée dans une application de production et je peux dire que cela fonctionne le plus certainement. N'oubliez pas que SKB stipule la solution fonctionne dans WPF, tout simplement pas à Silverlight.



3
votes

Silverlight4 ne se lie pas aux propriétés attachées dans le style. Je suggère d'utiliser l'approche de David Anson décrit ici . xxx

et dans la liste de liste: xxx


0 commentaires

2
votes

Old Post mais je suis allé dans le même problème, mais maintenant avec SL5 qui permet désormais Binding dans les régleurs de style. J'essayais d'éviter d'utiliser la liste (code> (car il gère la sélection, etc.) et le itemsControl ne dispose toujours pas de élémentContainerStyle . Donc j'ai essayé quelques choses.

Je n'ai pas trouvé beaucoup de sujet discuter de ce problème, alors laissez-moi partager ma solution (désolé si elle est duplicate)

En fait, j'ai trouvé un moyen très pratique de résoudre Le problème en ajoutant un style Sans nom dans les ressources xxx

fonctionne comme un charme dans SL5 :) < / p>


0 commentaires