【发布时间】: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