2016-12-30 62 views
1

我有一個列表與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。

+0

嗨,有沒有更新?我的答案是否解決了您的問題?這是一個可接受的答案嗎? –

+0

那該死的..我沒有收到你的回信的消息...我會在接下來的幾天嘗試。對不起。 – R3Tech

回答

0

這裏的問題是你創建的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