簡體   English   中英

UWP中的InkCanvas MVVM綁定

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM