0

WPF アプリケーションでは、ContentControl. この ContentControl には、View.

特定UserControlの から始めて、その論理ツリーを上っていき、途中ですべてのコンポーネントを「アクティブ化」しようとしています。たとえば、一方の親が である場合、Tab例によってそれを選択します。

私の問題は、私UserControlがにあるとき、私がContentControl呼び出したときに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中のコントロールから取得する方法はありますか?

編集コントロールが選択されていないタブにあるという事実に関連しているようです(私の機能の目標は、何かにバインドされたユーザーコントロールが配置されているタブをアクティブにすることです)。

4

1 に答える 1