如何从选项卡本身包含的另一个用户控件将选项卡添加到一个用户控件中存在的选项卡控件?
我可以在不将 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 http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.parent.aspx财产。这可能允许您找到包含此 UserControl 的 TabControl 实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)