2016-12-30 13 views
1

У меня есть список с InkStrokeContainer в ListView, и я пытаюсь связать InkCanvas с ним. В WPF InkCanvas имеет атрибут Strokes, но в UWP он недоступен. Другая идея заключалась в привязке к InkPresenter, но как?InkCanvas MVVM привязка в UWP

Тогда моя идея состояла в создании InkCanvasControl, который простирается от InkCanvas и создает свойство для штрихов.

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

Но с этим я получил ошибку: «Невозможно назначить Strokes собственности» ... Я использовал это так:

<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.

 Смежные вопросы

  • Нет связанных вопросов^_^