件名。これは、私がアプリケーションを閉じている瞬間に、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に設定しないようにするにはどうすればよいですか?それはなぜ起こるのですか?
catel:
あなたは
Model
属性のプロパティを設定することによって、この動作を変更できますか? – Willカルテル、もう傷つけないでください! –