设计数据上下文没有按预期工作

本文关键字:工作 数据 上下文 | 更新日期: 2023-09-27 18:18:01

在一个新的WP8.1项目中,我创建了一个ViewModel并将其用于设计数据。我的绑定没有显示我期望的值:

namespace App1
{
    public class ViewModel
    {
        public ViewModel()
        {
            this.Name = "hello world";
        }
        public string Name
        {
            get; set;
        }
    }
}
<Page
    x:Class="App1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App1"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DataContext="{d:DesignInstance local:ViewModel}">
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <TextBlock Text="{Binding Name}" />
    </Grid>
</Page>

在Blend的设计界面或者Visual Studio的设计器中,我看到的文字是"Name"而不是"hello world"。

Page的设计时DataContext应该是我的ViewModel的一个实例,{Binding Name}应该是我继承的DataContext的Name属性的值。我遗漏了什么?

设计数据上下文没有按预期工作

默认情况下,DesignInstance试图模拟视图模型中的数据。如果您想使用实际数据,您需要设置IsDesignTimeCreatable标志:

d:DataContext="{d:DesignInstance local:ViewModel, IsDesignTimeCreatable=True}"

事实证明,您需要构建非ARM才能正常工作。

问题是我正在使用ARM配置(当我想部署到Phone时切换到ARM),并且我已经更改了x86配置来构建ARM。因此,无论我选择的是ARM还是x86配置,它都会构建ARM,因此它不会工作。