在 WPF 应用程序中,我有一个ContentControl
. 在这个 ContentControl 中,我有一个View
.
从一个特定的开始UserControl
,我试图在它的逻辑树中向上,并在途中“激活”每个组件。例如,如果一个父母是 a Tab
,我通过示例选择它。
我的问题是,当我UserControl
在 aContentControl
中时,当我调用时,LogicalTreeHelper.GetParent(...)
我收到 null:
private static void Activate(FrameworkElement frameworkElement)
{
//Here, in one iteration, I receive null when it's supposed to be the `ContentControl`.
DependencyObject parent = LogicalTreeHelper.GetParent(frameworkElement);
if (parent is FrameworkElement parentFrameworkElement)
{
Activate(parentFrameworkElement);
}
if (frameworkElement is DXTabItem tab)
{
tab.IsSelected = true;//If it's a tab, it gets activated
}
frameworkElement.Focus();
}
我的 Xaml 是这样的:
<dx:DXTabControl AllowMerging="True" TabContentCacheMode="None" Margin="0,3,0,0">
<dx:DXTabItem Header="Some channel">
<local:SomeControl Channel="{Binding Channel}"/>
</dx:DXTabItem>
<dx:DXTabItem Header="Some other view">
<ContentControl Content="{Binding Channel, Converter={StaticResource SomeModelToViewModelConverter}}" ContentTemplateSelector="{StaticResource ConventionBasedDataTemplateSelector}" />
</dx:DXTabItem>
</dx:DXTabControl>
所以:知道如何ContentControl
从里面的控件中获取吗?
编辑这似乎与控件位于未选择的选项卡中的事实有关(我的功能的目标是激活绑定到某物的用户控件所在的选项卡)。