環境
VisualStudio2017(C#)
.NetFramework 4.7.2
Prism.Wpf 6.3.0
ReactiveProperty 5.0.0
前提・実現したいこと
現在PrismとReactivePropertyを使用してMVVMの画面作成を学習中です。
その中で解決方法がわからいことがあり、質問させていただきました。
Required属性が指定されているプロパティを画面にバインドした際に
画面初回起動時にコントロールの未入力チェックが走りコントロールがエラー状態になる
起動時の必須チェックはスキップして、起動後フォーカス移動をした際に初めて
エラー状態になるようにしたい。
ReactivePropertyを使用してこういった事は可能でしょうか?
該当のソースコード
XAML
C#
1<Window 2 x:Class="ValidationSample.Views.MainWindow" 3 xmlns="http://schemas.microsoft.c![イメージ説明](ff78d47fd7b91fa45bfa9a80196ee947.jpeg)fx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 6 xmlns:local="clr-namespace:ValidationSample.ViewModels" 7 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 8 xmlns:prism="http://prismlibrary.com/" 9 Title="タイトル" 10 Width="525" 11 Height="350" 12 d:DataContext="{d:DesignInstance local:MainWindowViewModel}" 13 prism:ViewModelLocator.AutoWireViewModel="True" 14 mc:Ignorable="d"> 15 <StackPanel> 16 <TextBox Margin="1" Text="{Binding Name.Value, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" /> 17 <TextBox /> 18 </StackPanel> 19</Window>
ViewModel
c#
1using Prism.Mvvm; 2using Reactive.Bindings; 3using System.ComponentModel.DataAnnotations; 4 5namespace ValidationSample.ViewModels 6{ 7 public class MainWindowViewModel : BindableBase 8 { 9 [Required(ErrorMessage = "必須項目です")] 10 public ReactiveProperty<string> Name { get; } 11 12 public MainWindowViewModel() 13 { 14 this.Name = new ReactiveProperty<string>().SetValidateAttribute(() => this.Name); 15 } 16 } 17} 18
C#
1using System.Wi![イメージ説明](1eea72741316d6c15d20a6f828d84ef9.jpeg) 2 3namespace ValidationSample.Views 4{ 5 /// <summary> 6 /// Interaction logic for MainWindow.xaml 7 /// </summary> 8 public partial class MainWindow : Window 9 { 10 public MainWindow() 11 { 12 InitializeComponent(); 13 } 14 } 15} 16
画面
画面起動時にテキストボックスが以下のように赤枠で囲われている
画面起動時は赤枠無しで、画面起動後のフォーカス移動時に初めて
必須チェックが行われ赤枠が表示されるようにしたい
回答1件
あなたの回答
tips
プレビュー