使用mvvm在wpf中动态加载用户控件

时间:2015-06-23 12:28:30

标签: c# wpf xaml mvvm

你有2个usercontrol(WPF)。 我必须根据条件加载此控件。 我有ReadingBookDoubleView.xaml和ReadingBookDoubleViewpdf.xaml 这是我的代码。

/used-guitars/search?page=2

我在Viewmodel类中有书类,它绑定到我正在加载用户控件的视图。 我必须一次加载一个控件。如果书是Kind是Pdf然后我加载ReadingBookDoubleViewpdf控件其他明智的我必须加载ReadingBookDoubleView。

如何根据条件加载控件。

1 个答案:

答案 0 :(得分:0)

您可以将单个DataTemplate与Trigger一起使用:

<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>