依赖属性Canvas不绑定

时间:2017-01-05 12:29:55

标签: c# wpf canvas controls viewmodel

我正在制作一个可以编辑图像的工具,所以我有一个自定义控件可以在画布上绘制。对于这个控件,我绑定了画笔的分辨率和颜色非常好,但是当我尝试绑定Canvas时,我总是在myViewModel中得到null。

我试图绑定一个List,但这也不起作用。我一直试图找出问题大约12个小时,所以我觉得是时候向你们寻求帮助了,所以我可以弄明白什么是错的。

我曾经和我的视图模型一起使用单例,然后我可以很好地链接到Canvas,但后来我意识到这是一种糟糕的工作方式,所以我尝试将它与依赖属性绑定。

每当我尝试访问Canvas时,它的值都为null,即使我已初始化它。

控制

    public static readonly DependencyProperty CanvasProperty = DependencyProperty.Register(
  "CanvasToDraw", typeof(Canvas), typeof(DrawCanvas), new PropertyMetadata(default(Canvas), null, null));

    public Canvas CanvasToDraw
    {
        get { return (Canvas)GetValue(CanvasProperty); }
        set { SetValue(CanvasProperty, value); }
    }

        public DrawCanvas()
    {
        InitializeComponent();
        CanvasToDraw = CanvasGrid;
    }

XAML

<Controls:DrawCanvas x:Name="DrawCanvas1" Resolution="{Binding Resolution}" CanvasToDraw="{Binding DrawingCanvas}" RectangleList="{Binding RectangleList, ElementName=DrawCanvas1}" ColorToDraw="{Binding SelectedColor}" HorizontalAlignment="Left" Height="256" Margin="10,40,0,0" VerticalAlignment="Top" Width="256" />

视图模型

        private Canvas _drawingCanvas;
    public Canvas DrawingCanvas
    {
        get { return _drawingCanvas; }
        set
        {
            _drawingCanvas = value;
            OnPropertyChanged("DrawingCanvas");
        }
    }

如果需要,我可以提供更多代码,但这是大多数相关代码。是的,我确实使用了INotifyPropertyChanged,因为我还有其他可以使用的东西。

1 个答案:

答案 0 :(得分:0)

我一直在寻找解决方案,但答案很简单。我认为绑定是双向的,但显然我必须设置Mode = TwoWay,一切都像魅力一样。 (链接一个observeablecollection,而不是Canvas)