【问题标题】:Binding observablecollection to Canvas将 observablecollection 绑定到 Canvas
【发布时间】:2012-09-25 05:46:59
【问题描述】:

我在将 ObservableCollection 绑定到画布时遇到了一些困难。

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 函数,使其正确调整大小以显示滚动查看器。

代码背后:

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 添加了一个椭圆,但画布上没有显示任何内容。绑定似乎无法正常工作。可能是什么问题?

【问题讨论】:

  • 如果您将 Caliburn Micro 用于 MVVM,将 ItemsSource="{Binding Circles}" 替换为 Name="Circles" 将解决您的问题
  • 或通过从 ItemsControl 中删除父 designCanvas 来检查
  • @TheIndianProgrammmer 是的,我正在使用 Caliburn Micro。我会试一试。
  • @TheIndianProgrammmer 嘿哇,好用。如果您想根据您的评论发布答案,我非常乐意接受。

标签: c# .net wpf graphics mvvm


【解决方案1】:

如果您使用的是 Caliburn Micro,请替换

ItemsSource="{Binding Circles}" 

Name="Circles" 

会解决你的问题

【讨论】:

    猜你喜欢
    • 2011-04-10
    • 2013-09-07
    • 2019-02-24
    • 2011-05-20
    • 2013-03-03
    • 2012-05-26
    • 2018-05-21
    • 1970-01-01
    相关资源
    最近更新 更多