2016-12-30 4 views
1

ListView에 InkStrokeContainer가있는 목록이 있는데 InkCanvas를 바인딩하려고합니다. WPF에서는 InkCanvas에 Strokes 속성이 있지만 UWP에서는 사용할 수 없습니다. 또 다른 아이디어는 InkPresenter에 바인딩하는 것이지만 어떻게해야합니까?UWP의 InkCanvas MVVM 바인딩

내 생각은 InkCanvas에서 확장하고 Strokes 속성을 만드는 InkCanvasControl을 만드는 것이 었습니다.

public InkStrokeContainer Strokes 
{ 
    get 
    { 
     return this.InkPresenter.StrokeContainer; 
    } 
    set 
    { 
     this.InkPresenter.StrokeContainer = value; 
    } 
} 

그러나이와

가 나는 오류가 발생했습니다 : "속성 스트로크를 할당 할 수 없습니다"... 내가 이런 식으로 사용 :

<controls:InkCanvasControl Strokes="{Binding Strokes}"></controls:InkCanvasControl> 

을 그리고 바인딩 내 뷰 모델에서입니다.

+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를 참조하십시오.