2016-10-03 4 views
0

件名。これは、私がアプリケーションを閉じている瞬間に、SavableModelBaseから継承された添付モデルを保存しようとしている私のViewModelのCloseAsync()のセクションで発生します。Catel、なぜ私のモデルのプロパティをnullに更新しますか?

私の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); 
} 

マイモデル:私は私のViewModelのServerIpAddressプロパティに属性[ViewModelToModel("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)); 

    ... 
} 

、値が利用可能です。それは予測可能です - もはやモデルのプロパティではなくなります。

私のアプリケーションを閉じているときにモデルがプロパティをnullに設定しないようにするにはどうすればよいですか?それはなぜ起こるのですか?

+0

catel:

あなたはModel属性のプロパティを設定することによって、この動作を変更できますか? – Will

+0

カルテル、もう傷つけないでください! –

答えて

0

私は、移動するコードはあまりありませんが、これはビューがアンロードされたために発生したと考えられます。これは、VMがキャンセルされることを意味します(明示的な保存がないため保存されません)。モデルはリセットされて元の状態にリセットされます。 yはuがそれを行う、

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

それは解決の問題です。そしていつものように、ありがとう! –

関連する問題