我正在制作一个可以编辑图像的工具,所以我有一个自定义控件可以在画布上绘制。对于这个控件,我绑定了画笔的分辨率和颜色非常好,但是当我尝试绑定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,因为我还有其他可以使用的东西。
答案 0 :(得分:0)
我一直在寻找解决方案,但答案很简单。我认为绑定是双向的,但显然我必须设置Mode = TwoWay,一切都像魅力一样。 (链接一个observeablecollection,而不是Canvas)