2016-10-03 1 views
0

Тема. Это происходит в тот момент, когда я закрываю приложение, а в разделе CloseAsync() моего ViewModel пытается сохранить прикрепленную модель, которая унаследована от SavableModelBase.Catel, почему вы обновляете свойства моей модели до нуля?

Мой ViewModel:

public ServerTabViewModel(Server server) 
{ 
    Argument.IsNotNull(() => server); 
    Server = server; 
} 

#region Properties 
[Model] 
public Server Server 
{ 
    get { return GetValue<Server>(ServerProperty); } 
    set { SetValue(ServerProperty, value); } 
} 

public static readonly PropertyData ServerProperty = RegisterProperty("Server", typeof(Server)); 

[ViewModelToModel("Server")] 
public string ServerIpAddress 
{ 
    get { return GetValue<string>(ServerIpAddressProperty); } 
    set { SetValue(ServerIpAddressProperty, value); } 
} 

public static readonly PropertyData ServerIpAddressProperty = RegisterProperty("ServerIpAddress", typeof(string)); 

... 
#endregion 

protected override async Task CloseAsync() 
{ 
    var server = new Server 
    { 
     ServerIpAddress = ServerIpAddress, // ServerIpAddress is null now and model property (Server.ServerIpAddress) too. 
     ... 
    }; 
    SettingsService.SaveServer(server); 
} 

Моя модель:

public class Server : SavableModelBase<Server> 
{ 
    public string ServerIpAddress 
    { 
     get { return GetValue<string>(ServerIpAddressProperty); } 
     set { SetValue(ServerIpAddressProperty, value); } 
    } 

    public static readonly PropertyData ServerIpAddressProperty = RegisterProperty("ServerIpAddress", typeof(string)); 

    ... 
} 

В случае, если я удалить атрибут [ViewModelToModel("Server")] на ServerIpAddress свойство моей ViewModel, значение доступно. Это предсказуемо - больше не связано с собственностью с моделью.

Как я могу получить, чтобы модель не задавала свои свойства null в момент закрытия моего приложения? И почему это происходит?

+0

CATEL, у у делать это? – Will

+0

Картель, пожалуйста, больше не больно! –

ответ

0

У меня не так много кода для прохода, но я думаю, что это вызвано разгрузкой просмотров. Это означает, что ваш vm будет отменен (не сохраняется, поскольку нет явного сохранения), и ваши модели будут сброшены, чтобы восстановить исходное состояние.

Вы можете изменить это поведение, установив свойство на Model атрибута:

[Model(SupportIEditableObject = false)] 
public Server Server 
{ 
    ... 
} 
+0

Решить проблему. И как всегда, спасибо! –

Смежные вопросы