Je suis perplexe ici. J'ai une collection observable qui contient des objets métier. Je l'ai lié à ItemsSource d'un ListBox. Je suis en train de mettre à jour le X et Y de mon objet et il est affiché correctement dans l'interface utilisateur pendant l'exécution car il est lié à l'élément haut et à gauche. Mais, voici où le problème est. J'ai également lié certaines données à afficher dans la propriété de texte textblock et les données n'affiche que la valeur initiale. Il ne met jamais à jour le texte Textblock, peu importe combien de fois je le change.Articles dans ObservableCollection ne mettant pas à jour la vue
Voici le code XAML. Si vous voyez un problème avec le XAML s'il vous plaît faites le moi savoir. Comme je l'ai dit, la liaison X/Y - Top/Left fonctionne très bien et se met à jour quand elle est modifiée, le TextBlock lié à DisplayData ne fonctionne pas.
En outre, mon objet métier dans ma collection implémente INotifyPropertyChanged.
Je vais essayer de faire une petite démonstration pour répliquer ceci si une réponse ne peut pas être donnée simplement en regardant le XAML.
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="614" Width="674">
<ListBox Name="PlottingBox" Background="White">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DisplayData}" />
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.Template>
<ControlTemplate TargetType="{x:Type ListBox}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Canvas IsItemsHost="True" />
</Border>
</ControlTemplate>
</ListBox.Template>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Canvas.Left" Value="{Binding Path=PlotX}" />
<Setter Property="Canvas.Top" Value="{Binding Path=PlotY}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Anvaka, Merci d'avoir regardé ça. 1. Oui. 2. Vérifié et OK. 3. N'a pas encore vérifié. 4. Aucune erreur de liaison. J'ai créé une petite application pour reproduire cette situation et la petite application fonctionne parfaitement. Donc vous avez absolument raison, ça DOIT être dans mon codebehind. Je vais parcourir le code et rendre compte. Merci encore. – Doug
Anvaka vous aviez raison. Le problème était dans mon codebehind. Un problème STUPD, STUPID. Je n'ai jamais mis à jour DisplayData après Sub New. DOH! Désolé si j'ai perdu votre temps. Doug – Doug
Je suis content que vous ayez trouvé la réponse :). Toutes nos félicitations! – Anvaka