前提・実現したいこと
ReactivePropertyでValidationを行い、値が特定の範囲内でなければ、ボタンを押せなくしたいです。
概ね期待通りの動作は実現できたのですが、TextBoxが空欄の場合にエラー状態となるにも関わらず、ボタンが押せてしまいます。
空欄状態でもボタンをDisableにするにはどうすれば良いでしょうか?
該当のソースコード
C#
1// ViewModel 2using Reactive.Bindings; 3using System; 4using System.Collections.Generic; 5using System.ComponentModel.DataAnnotations; 6using System.Reactive.Linq; 7using System.Security.Cryptography.X509Certificates; 8using System.Text; 9 10namespace ValidationApp 11{ 12 class MainWindowsViewModel 13 { 14 public MainWindowsViewModel() 15 { 16 this.InitializeProperty(); 17 } 18 19 [Required] 20 [Range(0,100)] 21 public ReactiveProperty<double> ValidateParameter { get; private set; } 22 23 public ReactiveCommand ValidCommand { get; private set; } 24 25 private void InitializeProperty() { 26 this.ValidateParameter = new ReactiveProperty<double>().SetValidateAttribute(() => this.ValidateParameter); 27 this.ValidCommand = this.ValidateParameter.ObserveHasErrors.Select(x => !x).ToReactiveCommand(); 28 } 29 } 30} 31
C#
1<!--View--> 2<Window x:Class="ValidationApp.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 7 xmlns:local="clr-namespace:ValidationApp" 8 mc:Ignorable="d" 9 Title="MainWindow" Height="450" Width="800"> 10 <StackPanel> 11 <TextBox Text="{Binding ValidateParameter.Value, UpdateSourceTrigger=PropertyChanged}" Width="100" Margin="10" /> 12 <Button Content="Valid" Command="{Binding ValidCommand}" Width="100"/> 13 14 </StackPanel> 15</Window> 16
補足情報(FW/ツールのバージョンなど)
ReactiveProperty: 7.4.1
.NET Core 3.1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/07 22:39
2020/10/09 11:40