【问题标题】:Moving from WPF 3.5 to 4.0 causes error "Can't put a page in a Style"从 WPF 3.5 迁移到 4.0 会导致错误“无法将页面放入样式”
【发布时间】:2014-02-25 21:28:37
【问题描述】:

我正在将我的应用程序从 .NET 3.5 迁移到 .NET 4.0,并且收到以下错误消息:“无法将页面放入样式中”。我已经为这个应用程序实现了 MVVM 模式,并使用数据模板告诉应用程序如何呈现我的各种视图模型......例如下面。

<DataTemplate DataType="{x:Type vm:ConfigureAxViewModel}">
    <vw:ConfigureAxPage />
</DataTemplate>

有没有办法解决这个错误?我必须让我的页面控件吗?

谢谢, 罗伊

【问题讨论】:

  • 我并不惊讶这在 4.0 中不起作用,我很困惑它在 3.5 中起作用。我是否正确理解了您的问题?
  • 误会是什么?我将数据类型定义为页面。不久前我在一些 MVVM 教程中看到了这一点。

标签: wpf mvvm


【解决方案1】:

3.5 和 4.0 的文档:

可以从WindowNavigationWindowFrame 或浏览器托管页面。

我不希望一个页面视图在很多情况下都能正常工作,通常视图只是UserControls。虽然我也不希望出现该错误消息...

【讨论】:

    【解决方案2】:

    我碰巧在 Visual Studio 2010 的设计器中遇到了这个错误。几个小时后,我的头发掉了一半,我在 App.xaml 中发现了问题

    <DataTemplate DataType="{x:Type vm:LoginViewModel}">
         <views:Login />
    </DataTemplate>
    

    (那么他们谈论的“风格”在哪里???)无论如何,在这里,登录是一个页面。事实证明,此处不能使用 Page。您必须改为在页面的 xaml 中指定 DataContext:

    DataContext="{Binding LoginPage,Source={StaticResource Locator}}
    

    Source

    我正在使用 MVVM Light,因此您可能想查看它以了解有关 Locator 的更多信息。

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多