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?
4 Réponses :
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 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.
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: - p> doit être p> Les conteneurs d'élément dans le cas de 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 fort> et il obtiendrait sa liaison de données à partir de la liste toujours je pense que Ben a une solution raisonnable en place qui Élimine cette approche. p> p> Listbox code> sont de type
listboxItem code> qui dérive de
contentcontrol code>. p>
dataContext code>. Il s'agit d'un
DataContext différent de code> qui s'applique à chaque élément de liste de liste (qui, dans ce cas, chaque élément de la collection d'éléments). P>
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 b> travail" et "Même si i> 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é code> code> du style serait liée à cette valeur commune b> (NB pas i> la liaison elle-même) et serait utilisé à tous les articles. Enfin, même si b> Tout le reste a fonctionné, la cibletype est b> 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.
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 . et dans la liste de liste: p>
Old Post mais je suis allé dans le même problème, mais maintenant avec SL5 qui permet désormais 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) p> En fait, j'ai trouvé un moyen très pratique de résoudre Le problème en ajoutant un style code> Sans nom code> dans les ressources p> p> fonctionne comme un charme dans SL5 :) < / p> p> Binding code> dans les régleurs de style. J'essayais d'éviter d'utiliser la liste code> (code> (car il gère la sélection, etc.) et le
itemsControl code> ne dispose toujours pas de
élémentContainerStyle code>. Donc j'ai essayé quelques choses.
Merci SKB, cela a répondu à ma question, comment faire cela dans WPF :-) Comme vous le dites, cela fonctionne bien dans WPF.