簡體   English   中英

具有相同類型子項的WPF自定義控件

[英]WPF Custom Control with children of the same type

我正在嘗試實現自己的控件,該控件可以承載一個或多個與控件本身類型相同的子級:

<local:MyControl x:Name="control1">
    <local:MyControl x:Name="control2">
        <local:MyControl x:Name="control3">
            <local:MyControl x:Name="control4">
                <local:MyControl x:Name="control5">
                    <local:MyControl x:Name="control6">
                        <local:MyControl x:Name="control7"/>
                    </local:MyControl>
                </local:MyControl>
            </local:MyControl>
       </local:MyControl>
   </local:MyControl>
</local:MyControl>

我的問題是只有第一個實例稱為root ,其他實例是第一個實例的子代。 他們甚至可能是彼此的孩子。

這里是MyControl類的代碼:

[ContentProperty("MyChildren")]
class MyControl : ItemsControl
{ 
    public List<MyControl> MyChildren
    {
        get { return (List<MyControl>)GetValue(MyChildrenProperty); }
        set { SetValue(MyChildrenProperty, value); }
    }

    // Using a DependencyProperty as the backing store for Children.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty MyChildrenProperty =
        DependencyProperty.Register("MyChildren", typeof(List<MyControl>), typeof(MyControl), new UIPropertyMetadata(new List<MyControl>()));
}

這段代碼是我嘗試過的,但是沒有用。

如何實現可以托管相同類型的子控件的自定義控件,在該控件中應該可以執行上述示例中的操作?

您在問問題之前沒有做任何類型的研究。 我知道我在說什么,因為如果您問過Google,您將知道wpf中的控件必須位於visualtree和/或邏輯樹中,此外,您還會讀到控件不應存儲在簡單列表中的某個地方。而是在UIElementCollection中進行管理,該UIElementCollection會自動為您管理在visualtree中添加控件或從中刪除控件。

只是谷歌您的問題,你會知道我在說什么。 關於如何編寫自定義控件的教程很多。 在msdn上有很多關於wpf中的自定義控件的文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM