private void SetValidateAttributes() { KaiCode.SetValidateAttribute(() => KaiCode); UserId.SetValidateAttribute(() => UserId); Password.SetValidateAttribute(() => Password); ErrorKaiCode = KaiCode // エラーが発行されるIO<IE>を変換する .ObserveErrorChanged // エラーがない場合nullになるので空のIEにする .Select(e => e ?? Enumerable.Empty<object>()) // 最初のエラーメッセージを取得する .Select(e => e.OfType<string>().FirstOrDefault()) // ReactiveProperty化 .ToReactiveProperty(); ErrorUserId = UserId .ObserveErrorChanged .Select(e => e ?? Enumerable.Empty<object>()) .Select(e => e.OfType<string>().FirstOrDefault()) .ToReadOnlyReactiveProperty(); ErrorPassword = Password .ObserveErrorChanged .Select(e => e ?? Enumerable.Empty<object>()) .Select(e => e.OfType<string>().FirstOrDefault()) .ToReadOnlyReactiveProperty(); }