gpt4 book ai didi

c# - 从用户控件内部向 tabcontrol 添加选项卡

转载 作者:行者123 更新时间:2023-11-30 18:08:37 24 4
gpt4 key购买 nike

如何从包含在选项卡本身中的另一个用户控件向存在于一个用户控件中的选项卡控件添加选项卡? 我是否可以在不将 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。您可以传递一个实例,作为一个选项(可能是最强大的)。或者,您可以使用某种形式的依赖注入(inject)或服务来检索正确的 TabControl。

另一种选择(虽然可能很脆弱)是向上导航树,直到找到 TabControl。 FrameworkElement(从中派生出 UserControl 和其他面板)定义了一个 Parent属性(property)。这可能允许您走上去找到包含此 UserControl 的 TabControl 实例。

关于c# - 从用户控件内部向 tabcontrol 添加选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3064365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com