如何在WPF中更改上下文

时间:2011-11-29 11:05:40

标签: wpf mvvm

我正在使用MVVM为全屏某种Kiosk开发我的第一个WPF应用程序。 我需要更改上下文(视频视图,文本视图,powerpoint视图)以响应异步事件。

我很难过,因为我在MVVM中定义了以下数据上下文,但我还没有能够在它们之间切换:

<Window.Resources>
    <DataTemplate DataType="{x:Type vm:VideoViewModel}">
        <v:VideoView />
    </DataTemplate>
    <DataTemplate DataType="{x:Type vm:PowerpointViewModel}">
        <v:PowerpointView />
    </DataTemplate>
</Window.Resources>

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

通常我有ShellViewModel,其中包含CurrentPage属性,其中包含当前页面的ViewModel。在XAML中,我将ContentControl.Content绑定到CurrentPage,然后切换视图,我只需将CurrentPage属性切换到ViewModel应该是最新的。

<ContentControl Content="{Binding CurrentPage}" />

更改页面命令:

void ChangePage(ViewModelBase page)
{
    CurrentPage = page;
}

有关示例,请参阅我的this post