ObservableCollectionをcanvasにバインドするのに問題があります。
XAML:
<ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible">
<local:DesignerCanvas x:Name="designerCanvas" AllowDrop="True">
<ItemsControl ItemsSource="{Binding Circles}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<Button Canvas.Left="452" Canvas.Top="487" Content="Button" Height="23" Name="button1" Width="75" Click="button1_Click" />
</local:DesignerCanvas>
</ScrollViewer>
注:DesignerCanvasは、Canvasから派生した単なるクラスです。MeasureOverride関数をオーバーライドして、適切なサイズに変更し、scrollviewerが表示されるようにしました。
コードビハインド:
public partial class LogicView : UserControl
{
private ObservableCollection<Shape> circles;
public ObservableCollection<Shape> Circles
{
get { return circles; }
set { circles = value; }
}
...
public void DrawCircle()
{
Ellipse ellipse = new Ellipse();
SolidColorBrush brush = new SolidColorBrush(Brushes.Blue.Color);
ellipse.Fill = brush;
ellipse.StrokeThickness = 2;
ellipse.Stroke = Brushes.Black;
ellipse.Width = 100;
ellipse.Height = 100;
DesignerCanvas.SetLeft(ellipse, 100);
Circles.Add(ellipse);
}
}
DrawCircle関数は、ObservableCollectionに楕円を追加しますが、キャンバスには何も表示されません。バインディングが正しく機能していないようです。何が問題になる可能性がありますか?