2015-06-23 3 views
1

Привет, у меня 2 пользовательских элемента управления (WPF). Я должен загрузить этот элемент управления в соответствии с условием. У меня есть ReadingBookDoubleView.xaml nad ReadingBookDoubleViewpdf.xaml это мой код.загрузить пользовательское управление динамически в wpf, используя mvvm

<UserControl.Resources> 
    <DataTemplate DataType="{x:Type viewModels:ReadingBookDoubleVM}"> 
     <view:ReadingBookDoubleViewPdf/> 
    </DataTemplate> 
    <DataTemplate DataType="{x:Type viewModels:ReadingBookDoubleVM}"> 
     <view:ReadingBookDoubleView/> 
    </DataTemplate> 
</UserControl.Resources> 

У меня есть книга рода в классе ViewModel, который связывание с этой точкой зрения, где я загружающий пользовательским элементом управления. Мне нужно загрузить один элемент управления одновременно. Если у вас есть вид Kind - Pdf, тогда у меня есть загрузка ReadBookDoubleViewpdf. Управление другим. Мне нужно загрузить ReadBookDoubleView.

Как я могу загрузить элемент управления в соответствии с условием.

+0

возможно дубликат [условного DataTemplate] (http://stackoverflow.com/questions/9049197/conditional-datatemplate) – Sinatr

+0

Имейте 2 ViewModel унаследовать из inteface или абстрактного класса, тогда свяжите класс abtract или интерфейс, при привязке конкретного вызова он будет использовать соответствующий вид. Изменить: игнорировать этот комментарий. Не заметил, что это была одна и та же модель просмотра. –

+0

Это не так, как вы пытаетесь это сделать. Вы в основном говорите: если вы найдете «ReadingBookDoubleVM», отобразите A, и если вы найдете то же самое ('ReadingBookDoubleVM'), отобразите B. нет смысла. – Noctis

ответ

0

Вы можете использовать один DataTemplate с триггером:

<UserControl.Resources> 
    <DataTemplate DataType="{x:Type viewModels:ReadingBookDoubleVM}"> 
     <ContentControl x:Name="Presenter" Content="{Binding}"> 
      <ContentControl.ContentTemplate> 
       <DataTemplate> 
        <view:ReadingBookDoubleView /> 
       </DataTemplate> 
      </ContentControl.ContentTemplate> 
     </ContentControl> 
     <DataTemplate.Triggers> 
      <DataTrigger Binding="{Binding Kind}" Value="Pdf"> 
       <Setter TargetName="Presenter" 
         Property="ContentTemplate"> 
        <Setter.Value> 
         <DataTemplate> 
          <view:ReadingBookDoubleViewPdf /> 
         </DataTemplate> 
        </Setter.Value> 
       </Setter> 
      </DataTrigger> 
     </DataTemplate.Triggers> 
    </DataTemplate> 
</UserControl.Resources> 
Смежные вопросы