簡體   English   中英

從usercontrol內部向tabcontrol添加選項卡

[英]adding tabs to tabcontrol from inside usercontrol

如何將標簽添加到tabcontrol中,該tabcontrol存在於一個用戶控件中,該控件位於選項卡本身中? 我可以在不將tabcontrol傳遞給構造函數中的參數的情況下執行此操作,可能通過一些靜態全局方法嗎?

我試過了

public static ObservableTabCollection FindCollectionFromUC(this DependencyObject depObject)
        {
            bool loop = true;
            var parent = (VisualTreeHelper.GetParent(depObject) as FrameworkElement);
            while (loop)
            {
                if (parent.GetType() is typeof(TabControl))
                {
                    loop = false;
                    return ((ObservableTabCollection)((TabControl)parent).ItemsSource);
                }
                parent = parent.GetParent() as FrameworkElement;
            }
            return null;
        }

====編輯====解決方案是這樣的:

            bool loop = true;
            var parent = depObject as FrameworkElement;

            while (loop)
            {
                if (parent != null)
                {
                    parent = VisualTreeHelper.GetParent(parent) as FrameworkElement;
                    var type = parent.GetType();
                    if (parent.GetType() == typeof(TabControl))
                        {
                            loop = false;
                            return ((ObservableTabCollection)((TabControl)parent).ItemsSource);
                        }
                }
                else { loop = false; }
            }
            return null;

UserControl需要一些方法來查找TabControl。 您可以傳遞一個實例,作為一個選項(可能是最強大的)。 或者,您可以使用某種形式的依賴注入或服務來檢索正確的TabControl。

另一種選擇,雖然可能很脆弱,但是可以向上導航樹,直到找到TabControl。 FrameworkElement(UserControl和其他面板派生的)定義Parent屬性。 這可能允許您向上走,找到包含此UserControl的TabControl實例。

暫無
暫無

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

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