gpt4 book ai didi

c# - UWP 中的 InkCanvas MVVM 绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 15:10:28 28 4
gpt4 key购买 nike

我在 ListView 中有一个包含 InkStrokeContainer 的列表,我尝试将 InkCanvas 绑定(bind)到它。在 WPF 中,InkCanvas 有一个 Strokes 属性,但在 UWP 中它不可用。另一个想法是绑定(bind)到 InkPresenter,但如何绑定(bind)?

然后我的想法是创建一个从 InkCanvas 扩展的 InkCanvasControl 并为 Strokes 创建属性。

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

但是我得到了错误:“无法分配属性 Strokes”...我是这样使用的:

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

绑定(bind)来 self 的 ViewModel。

最佳答案

这里的问题是您创建的 Strokes 属性不是依赖属性,因此它不支持绑定(bind),这就是您收到错误的原因。要解决此问题,您可以将 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 .

关于c# - UWP 中的 InkCanvas MVVM 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41395214/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com