2016-12-30 30 views
1

ListViewにInkStrokeContainerのリストがあり、InkCanvasをバインドしようとしています。 WPFではInkCanvasにStrokes属性がありましたが、UWPでは使用できません。別のアイデアはInkPresenterにバインドすることでしたが、どうしましたか?UWPのInkCanvas MVVMバインド

私の考えは、InkCanvasから拡張し、StrokesのPropertyを作成するInkCanvasControlを作成することでした。

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プロパティを登録することができます。

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を参照してください。

関連する問題