2

MVVM Light、Sql Server Compact Toolkit、および Windows Phone 7 を使用しています。

SQL Server Compact 3.5 データベースを作成し、ツールキットを使用して各テーブルのデータ コンテキストとドメイン クラスを生成しました。

こんな感じ

[global::System.Data.Linq.Mapping.TableAttribute(Name = "ContactGroups")]
    public partial class ContactGroup : INotifyPropertyChanging, INotifyPropertyChanged
    {

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private int _Id;

        private string _Title;

        private System.DateTime _LastUpdated;

        private EntitySet<GContact> _GContacts;

        #region Extensibility Method Definitions
        partial void OnLoaded();
        partial void OnValidate(System.Data.Linq.ChangeAction action);
        partial void OnCreated();
        partial void OnIdChanging(int value);
        partial void OnIdChanged();
        partial void OnTitleChanging(string value);
        partial void OnTitleChanged();
        partial void OnLastUpdatedChanging(System.DateTime value);
        partial void OnLastUpdatedChanged();
        #endregion

        public ContactGroup()
        {
            this._GContacts = new EntitySet<GContact>(new Action<GContact>(this.attach_GContacts), new Action<GContact>(this.detach_GContacts));
            OnCreated();
        }

        [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Id", DbType = "Int NOT NULL", IsPrimaryKey = true)]
        public int Id
        {
            get
            {
                return this._Id;
            }
            set
            {
                if ((this._Id != value))
                {
                    this.OnIdChanging(value);
                    this.SendPropertyChanging();
                    this._Id = value;
                    this.SendPropertyChanged("Id");
                    this.OnIdChanged();
                }
            }
        }

        [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Title", DbType = "NVarChar(100) NOT NULL", CanBeNull = false)]
        public string Title
        {
            get
            {
                return this._Title;
            }
            set
            {
                if ((this._Title != value))
                {
                    this.OnTitleChanging(value);
                    this.SendPropertyChanging();
                    this._Title = value;
                    this.SendPropertyChanged("Title");
                    this.OnTitleChanged();
                }
            }
        }

        [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_LastUpdated", DbType = "DateTime NOT NULL")]
        public System.DateTime LastUpdated
        {
            get
            {
                return this._LastUpdated;
            }
            set
            {
                if ((this._LastUpdated != value))
                {
                    this.OnLastUpdatedChanging(value);
                    this.SendPropertyChanging();
                    this._LastUpdated = value;
                    this.SendPropertyChanged("LastUpdated");
                    this.OnLastUpdatedChanged();
                }
            }
        }

        [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "FK_GContacts_ContactGroups", Storage = "_GContacts", ThisKey = "Id", OtherKey = "ContactGroups_Id", DeleteRule = "NO ACTION")]
        public EntitySet<GContact> GContacts
        {
            get
            {
                return this._GContacts;
            }
            set
            {
                this._GContacts.Assign(value);
            }
        }

        public event PropertyChangingEventHandler PropertyChanging;

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void SendPropertyChanging()
        {
            if ((this.PropertyChanging != null))
            {
                this.PropertyChanging(this, emptyChangingEventArgs);
            }
        }

        protected virtual void SendPropertyChanged(String propertyName)
        {
            if ((this.PropertyChanged != null))
            {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        private void attach_GContacts(GContact entity)
        {
            this.SendPropertyChanging();
            entity.ContactGroup = this;
        }

        private void detach_GContacts(GContact entity)
        {
            this.SendPropertyChanging();
            entity.ContactGroup = null;
        }
    }

しかし、それをブレンド可能にしようとすると(つまり、偽のデータを作成して、ブレンドに入るとき、空のボックスを見るのではなく、より適切に作業できるようにします)、ブレンドには何も表示されません

動作しない単純なドメインがある場合

  public class ContactGroup
    {
        public int Id { get; set; }

        public string Title { get; set; }

        public DateTime LastUpdated { get; set; }

        public List<GContacts> Contacts { get; set; }

        public ContactGroup()
        {
            Contacts = new List<GContacts>();
        }

    }

次に、ビューモデルのロケーターに

    if (ViewModelBase.IsInDesignModeStatic)
    {
        SimpleIoc.Default.Register<IContactService, DesignContactService>();
    }
    else
    {
        SimpleIoc.Default.Register<IContactService, DesignContactService>();
    }

編集 これと思われる問題の行

 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

それを削除すると、ブレンドにデータが再び表示されます。

4

0 に答える 0