【问题标题】:Design-time data not showing when creating a UWP MVVM Light project创建 UWP MVVM Light 项目时未显示设计时数据
【发布时间】:2016-05-26 12:04:02
【问题描述】:

在创建 MVVM Light UWP 应用程序时,我无法通过我的视图模型获取程序化设计时数据。我相信这可能是由于 Visual Studio 2015 在设计器中添加了绑定的属性名称。我已经确认这是在项目模板中创建一个空白的 MvvmLight (Win10Univ) 应用程序(MVVM Light 2015 for VS2015 - 版本 5.2.0.0),它清楚地显示“WelcomeTitle”,属性名称而不是“欢迎使用 MVVM Light [ design]" 是在DesignDataService 类中设置的。

MVVM Light Main Page capture in designer showing incorrect design time data

在我自己的项目中看到这个问题时,我在我的视图模型中使用了类似的东西:

if (this.IsInDesignMode)
{
    // Load design time data when in design mode
    this.Duration = "2 HRS 13 MINS";
}

然后我将绑定到我的视图中的属性,数据上下文设置如下:

<Page.DataContext>
        <Binding Path="FooBarPageViewModel" Source="{StaticResource Locator}" />
</Page.DataContext>

现在,根据 MVVM Light 项目模板应用程序,通常以上就是您需要做的所有事情,但我尝试跟随但没有成功:

d:DataContext="{Binding FooBarPageViewModel, Source={StaticResource Locator}}"

我也尝试过使用 x:Bind,但仍然遇到同样的问题。

那么有人知道如何解决这个问题或遇到过类似的问题吗?

注意:此问题可能不仅仅与 MVVM Light 有关,还可能是 UWP 平台问题。

【问题讨论】:

  • 我刚刚创建了您提到的模板,并确切了解了您的意思,但是在我运行应用程序后,扼杀的设计时间数据开始工作。奇怪,因为 const WelcomeTitlePropertyName = "WelcomeTitle" 据我所知没有使用
  • 您是否构建了应用程序?并且 x:Bind 不支持设计时间数据
  • @DavidKosorin,是的,我在 x64 上构建了模板应用程序,但仍然没有在设计器中看到“欢迎使用 MVVM Light [设计]”。好的,很高兴知道 x:Bind 不设计时间数据。
  • 嗯,刚刚将构建架构更改为 x86,现在我看到了设计时数据!我猜 VS 设计器不支持 x64 的设计时数据?
  • @SandipAhluwalia 是的,我可以确认您所说的切换到 x64 并且设计时数据消失了。每天学习新东西 :) 自己将其放入答案中并标记为正确,以便其他人看到

标签: xaml mvvm-light uwp uwp-xaml


【解决方案1】:

好的,因此在 x86 架构中构建模板 MVVM Light UWP 应用程序允许您在 Visual Studio 设计器中查看设计时数据。但是,有几点:

  • 在 x86 模式下,您必须在设计器中启用项目代码按钮才能查看设计时数据。
  • 如果您在使用 x86 的 XAML 页面中结合了 x:bind 和运行时绑定,则设计器会崩溃。您可以在设计器中禁用项目代码以修复崩溃,但随后设计时数据将无法再次工作。
  • 在 x64 模式下,您似乎无法启用项目代码按钮,从而导致了这个原始问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多