WPF 寄存器依赖于另一个控件

本文关键字:控件 另一个 依赖于 寄存器 WPF | 更新日期: 2023-09-27 18:31:23

我有一个画布,我想创建一个依赖属性并将其设置为滚动视图,这是画布的父控件。我收到依赖错误

抛出的异常:PresentationFramework中的"System.Windows.Markup.XamlParseException".dll

MainWindow.xaml

<Grid>
        <ScrollViewer Name="NexusScrollViewer"
                                  Background="Transparent"
                                  HorizontalScrollBarVisibility="Auto"
                                  VerticalScrollBarVisibility="Auto">
            <nexus:NexusCanvas x:Name="MyDesignerCanvas"
                                          MinHeight="800"
                                          MinWidth="800"
                                          AllowDrop="True"
                                          ScrollViewer="{Binding ElementName=NexusScrollViewer}"
                                          Background="#FF252629">
                <Ellipse Canvas.Left="50" Canvas.Top="200" Fill="Red" Width="100" Height="100"/>
                <Ellipse Canvas.Left="200" Canvas.Top="10" Fill="LightBlue" Width="100" Height="100"/>
            </nexus:NexusCanvas>
        </ScrollViewer>
    </Grid>

NexusCanvas.cs

public class NexusCanvas : Canvas
    {
        private Point? dragStartPoint = null;

        // attempt to combine scrollview and canvas into one
        public ScrollViewer ScrollViewer
        {
            get { return (ScrollViewer)GetValue(ScrollViewerProperty); }
            set { SetValue(ScrollViewerProperty, value); }
        }
        public static readonly DependencyProperty ScrollViewerProperty =
            DependencyProperty.Register("ScrollViewer", typeof(ScrollViewer), typeof(ScrollViewer));
    }

当我在 NexusCanvas 中创建控件时,我最好只找到画布的父级.cs,如果是这样,我将如何做到这一点?

WPF 寄存器依赖于另一个控件

第三个参数的typeof中使用NexusCanvas

public class NexusCanvas : Canvas
{
    private Point? dragStartPoint = null;

    // attempt to combine scrollview and canvas into one
    public ScrollViewer ScrollViewer
    {
        get { return (ScrollViewer)GetValue(ScrollViewerProperty); }
        set { SetValue(ScrollViewerProperty, value); }
    }
    public static readonly DependencyProperty ScrollViewerProperty =
        DependencyProperty.Register("ScrollViewer", typeof(ScrollViewer), typeof(NexusCanvas));
}