InkCanvas MVVM绑定在UWP
问题描述:
我有一个列表与InkStrokeContainer ListView中,我尝试绑定InkCanvas它。在WPF中,InkCanvas具有Strokes属性,但在UWP中不可用。另一个想法是绑定到InkPresenter,但如何?InkCanvas MVVM绑定在UWP
然后我的想法是创建一个InkCanvasControl,它从InkCanvas扩展并创建Strokes属性。
public InkStrokeContainer Strokes
{
get
{
return this.InkPresenter.StrokeContainer;
}
set
{
this.InkPresenter.StrokeContainer = value;
}
}
但是有了这个,我得到了错误:“无法分配财产笔画” ...... 我用这种方式:
<controls:InkCanvasControl Strokes="{Binding Strokes}"></controls:InkCanvasControl>
,并且绑定是从我的ViewModel。
答
这里的问题是你创建的Strokes
属性不是一个依赖项属性,所以它不会支持绑定,这就是你得到错误的原因。为了解决这个问题,你可以像下面的注册Strokes
属性作为一个依赖属性:
public InkStrokeContainer Strokes
{
get { return (InkStrokeContainer)GetValue(StrokesProperty); }
set { SetValue(StrokesProperty, value); }
}
public static readonly DependencyProperty StrokesProperty = DependencyProperty.Register("Strokes",
typeof(InkStrokeContainer), typeof(InkCanvasControl),
new PropertyMetadata(null, new PropertyChangedCallback(OnLabelChanged)));
private static void OnLabelChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
(d as InkCanvasControl).InkPresenter.StrokeContainer = (InkStrokeContainer)e.NewValue;
}
欲了解更多信息,请参阅Custom dependency properties。
嗨,有没有更新?我的答案是否解决了您的问题?这是一个可接受的答案吗? –
那该死的..我没有收到你的回信的消息...我会在接下来的几天尝试。对不起。 – R3Tech