Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用wpf创建二叉树_C#_Wpf_Xaml_Mvvm_Icsharpcode - Fatal编程技术网

C# 用wpf创建二叉树

C# 用wpf创建二叉树,c#,wpf,xaml,mvvm,icsharpcode,C#,Wpf,Xaml,Mvvm,Icsharpcode,我正在尝试在wpf中创建一个二叉树,它将如下所示: 所以,我创建了三个类——Node(抽象)、OneTypeNode和TwoTypeNode(顺便说一句,MVVM在这里很重要)。 每个节点也都引用他的两个儿子。 在xaml中,它看起来是这样的: <StackPanel> <Grid ShowGridLines="False"> <Grid.ColumnDefinitions>

我正在尝试在wpf中创建一个二叉树,它将如下所示:

所以,我创建了三个类——Node(抽象)、OneTypeNode和TwoTypeNode(顺便说一句,MVVM在这里很重要)。 每个节点也都引用他的两个儿子。 在xaml中,它看起来是这样的:

        <StackPanel>

        <Grid ShowGridLines="False">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="1*"></ColumnDefinition>
                <ColumnDefinition Width="1*"></ColumnDefinition>
                <ColumnDefinition Width="1*"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>

            <Border Grid.Column="1" Grid.Row="0" x:Name="CircleFather" CornerRadius="5"
                    Width="40"
                    Height="40"
                    Background="DarkKhaki" 
                                    Margin="0 20 0 0"
                    BorderThickness="1" >
            </Border>

            <ContentControl Grid.Row="2" Grid.Column="0" Content="{Binding RightSon}" Margin="10"></ContentControl>
            <ContentControl Grid.Row="2" Grid.Column="2" Content="{Binding LeftSon}" Margin="10"></ContentControl>

        </Grid>
        <Line ></Line>
    </StackPanel>

这实际上让我递归地创建了子! 但有两个主要问题:首先是大小,我无法控制网格的大小,因为我不知道每边会有多少个儿子。另外,我不知道如何在每两个节点之间创建线。有什么想法吗?
非常感谢

你可能想看看,我认为他们已经做了类似的事情。他们有非常好的东西,但它与我想要的结构不同:(无论如何,谢谢!