[英]InkCanvas MVVM binding in UWP
我在ListView中有一個帶有InkStrokeContainer的列表,我嘗試將InkCanvas綁定到它。 在WPF中,InkCanvas有一個Strokes attribut但在UWP中它不可用。 另一個想法是綁定到InkPresenter,但如何?
然后我的想法是創建一個InkCanvasControl,它從InkCanvas擴展並為Strokes創建屬性。
public InkStrokeContainer Strokes
{
get
{
return this.InkPresenter.StrokeContainer;
}
set
{
this.InkPresenter.StrokeContainer = value;
}
}
但是有了這個,我得到了錯誤:“無法分配屬性Strokes”......我用這種方式:
<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;
}
有關詳細信息,請參閱自定義依賴項屬性 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.