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
中のコントロールから取得する方法はありますか?
編集コントロールが選択されていないタブにあるという事実に関連しているようです(私の機能の目標は、何かにバインドされたユーザーコントロールが配置されているタブをアクティブにすることです)。