2017-02-02 15 views
1

ContentControlをListboxItemにバインドする際にいくつかの問題があります。DataTemplateをElementNameで設定する

これは私のリストボックスです。

<ListBox x:Name="box"> 
    <ListBoxItem Tag="{x:Type vm:PART_FAMILY_ViewModel}" Content="Car"></ListBoxItem> 
    <ListBoxItem Tag="{x:Type vm:PART_TYPES_ViewModel}" Content="Bike" IsSelected="True"></ListBoxItem> 
</ListBox> 

これは私のContenControlです:

私ELEMENTNAMEで
<ContentControl Content="{Binding ElementName=box, Path=SelectedItem.Tag}"> 
    <ContentControl.Resources> 

    <DataTemplate DataType="{x:Type vm:PART_FAMILY_ViewModel}"> 
     <v:PART_FAMILYS_View></v:PART_FAMILYS_View> 
    </DataTemplate> 

    <DataTemplate DataType="{x:Type vm:PART_TYPES_ViewModel}"> 
     <v:PART_TYPES_View></v:PART_TYPES_View> 
    </DataTemplate> 

    </ContentControl.Resources> 
</ContentControl> 

私は唯一の私ContentControlにしてタグのデータ型を参照してください。

答えて

1

私のElementnameでは、私のContentControl内のTag DataTypeしか表示されません。

これは、タグプロパティを タイプに設定したためです。期待どおりに適用されるDataTemplateのタイプの インスタンスに設定する必要があります。
<ListBox x:Name="box"> 
    <ListBoxItem Content="Car"> 
     <ListBoxItem.Tag> 
      <vm:PART_FAMILY_ViewModel /> 
     </ListBoxItem.Tag> 
    </ListBoxItem> 
    <ListBoxItem Content="Bike" IsSelected="True"> 
     <ListBoxItem.Tag> 
      <vm:PART_TYPES_ViewModel /> 
     </ListBoxItem.Tag> 
    </ListBoxItem> 
</ListBox> 
関連する問題