WPF: Simplest ItemsControl n'affichera tous les éléments
-
22-09-2019 - |
Question
Je ne peux pas la plus simple idée d'un ItemControl
de travailler. Je veux juste remplir mon ItemsControl
avec un tas de SomeItem
.
Voici le code-behind:
using System.Collections.ObjectModel;
using System.Windows;
namespace Hax
{
public partial class MainWindow : Window
{
public class SomeItem
{
public string Text { get; set; }
public SomeItem(string text)
{
Text = text;
}
}
public ObservableCollection<SomeItem> Participants
{ get { return m_Participants; } set { m_Participants = value; } }
private ObservableCollection<SomeItem> m_Participants
= new ObservableCollection<SomeItem>();
public MainWindow()
{
InitializeComponent();
Participants.Add(new SomeItem("Hej!"));
Participants.Add(new SomeItem("Tjenare"));
}
}
}
Ceci est le XAML:
<ItemsControl Name="itemsParticipants"
ItemsSource="{Binding Path=Participants}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Red" BorderThickness="2">
<TextBlock Text="{Binding Text}" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Qu'est-ce que je fais mal?
La solution
Assurez-vous que votre DataContext est réglé sur RelativeSource Self quelque part dans votre XAML. Si vous pouviez poster plus de votre XAML il pourrait être utile.
<ItemsControl... DataContext="{Binding RelativeSource={RelativeSource Self}}" >
Autres conseils
Le ItemsSource fait référence à une propriété appelée MyParticipants, alors que le code, il semble être participants.
Vérifiez la vue de la sortie de débogage, et vous devriez voir les messages d'erreur.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow