繁体   English   中英

如何将InkToolbar链接到CustomControl内的InkCanvas?

[英]How to link InkToolbar to an InkCanvas which is inside CustomControl?

我正在创建一个包含InkCanvas的CustomControl。 现在的问题是如何将InkToolbar (在CustomControl之外)链接到InkCanvas (在CustomControl中)?

解决方案:

我尝试使用下面的代码将InkCanvas外的InkCanvas ,但它无法正常工作

这是我的代码 (我试过的解决方案不起作用 ):

//In CustomControl Code Behind
InkCanvas PATH_INK_CANVAS;

protected override void OnApplyTemplate()
{
    PATH_INK_CANVAS = GetTemplateChild<InkCanvas>("PATH_INK_CANVAS");
}

T GetTemplateChild<T>(string elementName) where T : DependencyObject
{
    var element = GetTemplateChild(elementName) as T;
    if (element == null)
        throw new NullReferenceException(elementName);
    return element;
}

public InkCanvas InkCanvas
{
    get { return PATH_INK_CANVAS; }
}

public static readonly DependencyProperty InkCanvasProperty =
    DependencyProperty.Register("InkCanvas", typeof(InkCanvas), typeof(RichInkTextBox), new PropertyMetadata(0));

//In CustomControl XAML
<Style>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <Grid Name="MainGrid" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
                    <InkCanvas Name="PATH_INK_CANVAS" Canvas.ZIndex="-1"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

//In Page
<local:CustomControl x:Name="MyCustomControl"/>
<InkToolbar Grid.Row="0" TargetInkCanvas="{x:Bind MyCustomControl.InkCanvas}"/>

我不认为这是定义只读依赖项属性的正确语法。 尝试类似以下的内容 -

public InkCanvas InkCanvas
{
    get => (InkCanvas)GetValue(InkCanvasProperty);
    private set => SetValue(InkCanvasProperty, value);
}
public static readonly DependencyProperty InkCanvasProperty = DependencyProperty.Register(
    "InkCanvas", typeof(InkCanvas), typeof(InkCanvasWrapper), new PropertyMetadata(null));

此外,请确保将Mode设置为x:BindOneWay因为InkCanvas依赖项属性的默认值为null (您将默认值设置为0 ,这是错误的)。

<InkToolbar Grid.Row="0" TargetInkCanvas="{x:Bind MyCustomControl.InkCanvas, Mode=OneWay}" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM