ユーザーコントロールの左側のリストボックスにパラメータのリストを表示し、詳細を右側に表示したエディタを作成しています手の側。 6つの異なるタイプのパラメータがあり、それぞれ独自の値のセットがあります。リストボックスは、各パラメータタイプを表示するためにDataTemplateを使用します。リストボックスのパラメータを選択すると、適切なテンプレートが右側にロードされるように、同様に右側で編集を行いたいと思います。次のXAMLコードは、左のリストボックスを表示するように機能しますが、右側には「コレクション」という単語を除いて何も表示できません。 Parametersは、パラメータのリストを含むObservableCollectionです。コンテンツプロバイダーリソースのxamlコードのセットだけでこれを実行しようとしていましたが、このMicrosoftの記事で提案されているテクニックに切り替えました:Simple Navigation Technique in WPF using MVVM。しかしながら、これはまったく同じ結果を与える。一覧の項目が選択されているのに何も表示されていないときに、ContentControlが適切なUserControlを表示しているはずです。スクリーンショットは、選択されたパラメータの右側に「コレクション」という単語ではなく、カスタムコントロールを表示する必要があります。 コンテンツコントロールをデータテンプレートのリストボックスと同じリストにバインドできません
":キー×" の、だからあなたのDataTemplateが自動的に適用されます
<DockPanel Grid.Row="1" DataContext="{Binding Parameters}">
<ListBox DockPanel.Dock="Left" MinWidth="250"
ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True"
SelectedItem="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}, Path=DataContext.SelectedParameter}"
Margin="0,0,15,0" HorizontalAlignment="Left">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Path=Icon}" Stretch="None" />
<TextBlock Text="{Binding Position}" Margin="10,0,0,0" />
<TextBlock Text="{Binding Name}" Margin="10,0,0,0" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<ContentControl Content="{Binding}">
<ContentControl.Resources>
<DataTemplate x:Key="InputParameterTemplate" DataType="x:Type local:ParameterDisplayLineInput">
<controls:EditInputParameter />
</DataTemplate>
<DataTemplate x:Key="OutputParameterTemplate" DataType="x:Type local:ParameterDisplayLineOutput">
<controls:EditOutputParameter />
</DataTemplate>
<DataTemplate x:Key="LogicParameterTemplate" DataType="x:Type local:ParameterDisplayLineLogic">
<controls:EditLogicParameter />
</DataTemplate>
<DataTemplate x:Key="TableParameterTemplate" DataType="x:Type local:ParameterDisplayLineTable">
<controls:EditTableParameter />
</DataTemplate>
<DataTemplate x:Key="TimerParameterTemplate" DataType="x:Type local:ParameterDisplayLineTimer">
<controls:EditTimerParameter />
</DataTemplate>
<DataTemplate x:Key="NetworkListParameterTemplate" DataType="x:Type local:ParameterDisplayLineNetworkList">
<controls:EditNetworkListParameter />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</DockPanel>
返信いただきありがとうございます。私はすべてのキーを削除しましたが、まだ単語(コレクション)が表示されています。奇妙なのは、実際のテキストボックスを(スタックパネル内の)コンテンツコントロールの代わりに置くと、正しいプロパティにバインドされ、リストで選択された実際の値が表示されるということです。コンテンツコントロールがリストボックスの同じ項目をリストボックスに表示しない理由はわかりません。ほかに何が足りないのですか? – Arkitec