私はここで困惑しています。ビジネス オブジェクトを保持する監視可能なコレクションがあります。ListBox の ItemsSource にバインドしています。オブジェクトの X と Y を更新していますが、アイテムの上部と左側にバインドされているため、実行時に UI に正しく表示されています。しかし、ここで問題が発生します。また、いくつかのデータをテキストブロックのテキスト プロパティに表示するようにバインドしましたが、データは初期値のみを表示します。何度変更しても、テキストブロック Text は更新されません。
ここに XAML があります。XAML に問題がある場合は、お知らせください。私が言ったように、X/Y - Top/Left バインディングは問題なく機能し、変更すると更新されますが、DisplayData にバインドされている TextBlock はそうではありません。
また、コレクション内のビジネス オブジェクトは INotifyPropertyChanged を実装します。
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>