Comment faire pour afficher des éléments dans la Toile par le biais de la Liaison
J'ai la liste des éléments que je veux afficher dans de la Toile à l'aide de la liaison de données.
ItemsToShowInCanvas = new ObservableCollection<ItemDetail>
{
new ItemDetail {Text = "ABC", Top = 10, Left = 200},
new ItemDetail {Text = "DEF", Top = 100, Left = 300},
new ItemDetail {Text = "PQR", Top = 50, Left = 150}
};
ItemDetail est une classe simple avec auto propriétés du Texte, en Haut et à Gauche des valeurs
public class ItemDetail
{
public string Text { get; set; }
public double Top { get; set; }
public double Left { get; set; }
}
Quand je databind les éléments, ils apparaissent dans la toile. Mais les éléments n'apparaissent pas dans les postes mentionnés à l'aide des propriétés Top et Left.
<Canvas>
<ItemsControl ItemsSource="{Binding Path=ItemsToShowInCanvas}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Text}" Canvas.Top="{Binding Path=Top}" Canvas.Left="{Binding Path=Left}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Canvas>
- ItemsControl utilise Stackpanel en tant que par défaut itemspanel. le textblock que vous ajoutez est en fait l'ajout d'un stackpanel, mais pas sur la toile. Le ItemsControl est d'ajouter à la toile. Essayez de changer itemspanel sur la toile
- Merci pour la réponse bathineni. J'ai essayé de mettre ItemsPanel comme la Toile, mais cela n'a pas fonctionné. Les éléments a commencé à montrer un sur l'autre. L'ajout de la ItemContainerStyle travaillé.
- double possible de WPF: Est-il possible de lier une Toile les Enfants de la propriété dans le code XAML?
- Décidément double. D'autre part, doublons possibles: stackoverflow.com/questions/1265364/... stackoverflow.com/questions/2415580/... stackoverflow.com/questions/4708151/... stackoverflow.com/questions/5261640/.... Se sent comme à chaque question ici a été répondu à au moins 10 fois 🙂
Vous devez vous connecter pour publier un commentaire.
Définir la
ItemsPanel
à unCanvas
et lier les conteneurs au lieu de laTextBlock
dans leDataTemplate
Shape
au lieu d'unTextBlock
puis-je simplement remplacer l'un avec l'autre?ItemsControl
résident dans l'arborescence du document?