2

2 つのカスタム コントロールを作成しました。1. LeafControl 2- LeafItemControl。LeafControl で、タイプ「List」の依存関係プロパティを「Items」として作成しました。

  • また、LeafItemControl では、ContentControl タイプの依存関係プロパティ呼び出し「ItemDetails」をもう 1 つ公開しました。

    <!---Base Custom Control "LeafControl"-->
    


         <uc:LeafControlItem.ItemDetails> <!--"ItemDetails" is a Dependency Property of type "LeafControl" in "LeafControlItem" custom control -->
            <uc:LeafControl> <!--Nested Control of same type ???-->
            <uc:LeafControl.Items>
             <uc:LeafControlItem Level="Some Type">
                <uc:LeafControlItem.ItemContent>
                    <GroupBox BorderThickness="0">
                       <StackPanel Orientation="Horizontal">
                        <TextBox Text="Property"></TextBox>
                        </StackPanel>
                    </GroupBox>
                </uc:LeafControlItem.ItemContent> 
    
                </uc:LeafControlItem>
                <uc:LeafControlItem Level="Variable">
                  <uc:LeafControlItem.ItemContent>
                                        <GroupBox BorderThickness="0">
                                            <StackPanel Orientation="Horizontal">
                                                <TextBox Text="Ellipse2.Top"></TextBox>
                                            </StackPanel>
                                        </GroupBox>
                                    </uc:LeafControlItem.ItemContent>
                                </uc:LeafControlItem>
                            </uc:LeafControl.Items>
                        </uc:LeafControl>  
                    </uc:LeafControlItem.ItemDetails>
                </uc:LeafControlItem>
    

ベースカスタムコントロールの「アイテム」にアクセスしようとすると。すべての子カスタム コントロールが追加されるのはなぜですか? 各カスタム コントロール オブジェクト (ベースと子) に個別の「アイテム」が含まれるようにするにはどうすればよいですか。

次のように、ベース カスタム コントロールで依存関係プロパティを使用しました。

 #region LeafControlItemCollection 

        public List<LeafControlItem> Items
        {
            get { return (List<LeafControlItem>)GetValue(ItemsProperty); }
            set { SetValue(ItemsProperty, value); }
        }

        public static readonly DependencyProperty ItemsProperty =
          DependencyProperty.Register(
              "Items", typeof(List<LeafControlItem>), typeof(LeafControl),
              new FrameworkPropertyMetadata(new List<LeafControlItem>(), null, null)
            ); 
#endregion

私が間違っているところを提案してください。

4

1 に答える 1