Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVVM Light和SQL Server CE在viewmodel中生成的代码_C#_Windows Phone 7_Sql Server Ce_Mvvm Light - Fatal编程技术网

C# MVVM Light和SQL Server CE在viewmodel中生成的代码

C# MVVM Light和SQL Server CE在viewmodel中生成的代码,c#,windows-phone-7,sql-server-ce,mvvm-light,C#,Windows Phone 7,Sql Server Ce,Mvvm Light,我只是在玩MVVM Light,我想我已经想好了,但我有一个问题 我正在使用SQLServerCE工具箱,它为我的数据库(SQLCE)生成类、映射等。表的一个属性名为Profile,我想将它用作我也可以绑定的属性。下面是我的ViewModel代码 public class ProfileViewModel : ViewModelBase { private Profile profile; // Profile is the class created by SQLCE Toolbox

我只是在玩MVVM Light,我想我已经想好了,但我有一个问题

我正在使用SQLServerCE工具箱,它为我的数据库(SQLCE)生成类、映射等。表的一个属性名为Profile,我想将它用作我也可以绑定的属性。下面是我的ViewModel代码

public class ProfileViewModel : ViewModelBase
{
    private Profile profile; // Profile is the class created by SQLCE Toolbox for table mapping

    public Profile UserProfile 
    {
        get { return profile; }
        set
        {
            profile = value;
            RaisePropertyChanged("UserProfile");
        }
    }

    public ProfileViewModel()
    {  
        if (IsInDesignMode)
        {
            // Code runs in Blend --> create design time data.
            UserProfile = new Profile()
            {
               Name = "NA",
               Age = 22
            }
        }
        else
        {
            // Code runs "for real"
            UserProfile = GetProfile(); 
        }
    }
}
在Expression blend中,我可以看到ViewModel,但看不到Profile属性,所以我猜某个地方正在生成异常

我确实尝试将blend作为一个过程附加,但没有出现错误。经过一点阅读,我发现blend无法连接到数据库,因此在DesignMode中必须生成一些数据。我试着只做
UserProfile=newprofile()
,但我猜它仍然在尝试使用数据库来创建它

编辑: 好的,我认为我遇到的问题与使用SQLCE有关。如果我尝试与WPF和MS SQL类似的东西,那么一切都很好

编辑2:
这与数据库密切相关。如果我从上面的代码中删除公共属性UserProfile,那么可以从Blend中看到所有其他属性(代码中未显示)。如果我把它加回去,就看不见了。那么如何使其可混合呢?

您必须使用
定位器
机制。默认情况下,您可以在MVVM应用程序中看到它

在设计模式下,您将提供
配置文件
对象的预构建版本,但在非设计模式下,将通过数据库提供
配置文件
对象。因此,您不会直接使用
newprofile()
,而是使用类似于
Locator.providedemewithuserprofile()的内容


例如,您可以查看一种实现方法。

您必须使用
定位器
机制。默认情况下,您可以在MVVM应用程序中看到它

在设计模式下,您将提供
配置文件
对象的预构建版本,但在非设计模式下,将通过数据库提供
配置文件
对象。因此,您不会直接使用
newprofile()
,而是使用类似于
Locator.providedemewithuserprofile()的内容


例如,你可以看看实现它的方法。

我注意到这里有几件事

您正在将设计时数据(和非设计时)分配给备份字段,而不是属性,因此不会调用RaisePropertyChanged()。如果属性发生更改,这将阻止视图更新,但您仍应“有权”访问该属性。这可能不是问题,因为这是在构造函数中发生的


另外,在您的文本中,您一直在谈论Profile属性,但该属性实际上被称为UserProfile。

我注意到这里有几件事

您正在将设计时数据(和非设计时)分配给备份字段,而不是属性,因此不会调用RaisePropertyChanged()。如果属性发生更改,这将阻止视图更新,但您仍应“有权”访问该属性。这可能不是问题,因为这是在构造函数中发生的


此外,在您的文本中,您一直在谈论Profile属性,但该属性实际上被称为UserProfile。

请注意。如果你在构造函数中分配
profile
,你不必在字段声明中分配它。是的,你的权利,那是一次“抓住稻草”的尝试,没有考虑任何注释。如果你在构造函数中分配
profile
,你不必在字段声明中分配它。是的,你的权利是“抓住稻草”尝试而不思考我看到了他的另一个视频,看起来很相似,但我会仔细看一看如果它回答了你的问题,请标记作为答案关闭线程。那么你如何创建预构建版本?类配置文件有两个名为Name和Age的属性。你是说当我做profile=new profile(){Name=“NA”;Age=30;}时,是预构建的吗?我看到了他的另一个视频,看起来很相似,但我会仔细看一看。如果它回答了你的问题,请标记作为关闭线程的答案。那么你如何创建预构建版本呢?类配置文件有两个名为Name和Age的属性。你是说当我做profile=newprofile(){Name=“NA”;Age=30;}时,预构建就是这样吗?