試してみるとフォーカスが変わったので、質問を修正しました。問題を次のように絞り込みました...
TreeView の選択した項目を StackPanel (またはユーザー コントロールを保持できる他のコンテナー) にバインドしようとしています。このコンテナーは、選択した項目の種類に応じて、UserControl を表示します。
ここに StackPanel の xaml があります (treeview と stackpanel の両方が同じウィンドウにある ==> 異なるグリッド列)
<StackPanel Grid.Column="2" MinWidth="500" DataContext="{Binding ElementName=myTree, Path=SelectedItem, Mode=OneWay}">
<StackPanel.Resources>
<DataTemplate DataType="{x:Type mvTypes:MyTypeA}">
<controls:UserControlA DataContext="{Binding}" />
</DataTemplate>
<DataTemplate DataType="{x:Type mvTypes:MyTypeB}">
<controls:UserControlB DataContext="{Binding}" />
</DataTemplate>
</StackPanel.Resources>
</StackPanel>
(リソースではなく) スタックパネルの直下にユーザー コントロールを配置すると、選択したオブジェクトがデータ コンテキストとして表示されます。その中に TextBox を配置すると、選択したアイテムの正しいタイプが表示されます。
<TextBox Name="textBox1" Text="{Binding}" />
何らかの理由で、(DataType を設定しなくても) DataTemplate 内に配置すると、何も表示されません。
任意の提案。このようなコンテナーとして適切に見える他のコントロールを見つけることができないようですが、おそらく StackPanel はこれに適したコントロールではないと考えています。
前もって感謝します。