質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

4347閲覧

ReactiveProperty バリデーション 画面起動前に値をセットすると赤枠が消えない

dai49

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

1クリップ

投稿2021/04/21 06:38

前提・実現したいこと

ReactivePropertyの勉強をしています。
ReactivePropertyでバリデーションを設定しているのですが、予め登録されているデータを編集ボタンでメモリ上の値をTextBoxに表示する動きを想定しているのですが、画面描画前に値を設定するとエラーになっていないはずがTextBoxが赤枠で表示されてしまいます。

使用環境
VisualStudio2019
.NETFramework4.7.2
ReactivePropertyv7.8.0

該当のソースコード

xaml

1<Window x:Class="ReactivePropertyTestApp.View.ValidationListWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:ReactivePropertyTestApp.View" 7 xmlns:vm="clr-namespace:ReactivePropertyTestApp.ViewModel" 8 mc:Ignorable="d" 9 Title="ValidationListWindow" Height="450" Width="800"> 10 11 <Window.DataContext> 12 <vm:ValidationListViewModel/> 13 </Window.DataContext> 14 15 <Grid> 16 <StackPanel> 17 <ListBox ItemsSource="{Binding TestListVM}"> 18 <ListBox.ItemTemplate> 19 <DataTemplate> 20 <TextBlock Text="{Binding Name}"/> 21 </DataTemplate> 22 </ListBox.ItemTemplate> 23 </ListBox> 24 <Button Content="追加" Click="Button_Click" Width="70" Height="30"/> 25 <Button Content="編集" Click="Button_Click_1" Width="70" Height="30"/> 26 </StackPanel> 27 </Grid> 28</Window>

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.Windows; 7using System.Windows.Controls; 8using System.Windows.Data; 9using System.Windows.Documents; 10using System.Windows.Input; 11using System.Windows.Media; 12using System.Windows.Media.Imaging; 13using System.Windows.Shapes; 14 15namespace ReactivePropertyTestApp.View 16{ 17 /// <summary> 18 /// ValidationListWindow.xaml の相互作用ロジック 19 /// </summary> 20 public partial class ValidationListWindow : Window 21 { 22 public ValidationListWindow() 23 { 24 InitializeComponent(); 25 } 26 27 private void Button_Click(object sender, RoutedEventArgs e) 28 { 29 ValidationTestWindow validationTestWindow = new ValidationTestWindow(0); 30 validationTestWindow.ShowDialog(); 31 } 32 33 private void Button_Click_1(object sender, RoutedEventArgs e) 34 { 35 ValidationTestWindow validationTestWindow = new ValidationTestWindow(1); 36 validationTestWindow.ShowDialog(); 37 } 38 } 39}

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.Collections.ObjectModel; 7 8using ReactivePropertyTestApp.Model; 9using Reactive.Bindings; 10 11namespace ReactivePropertyTestApp.ViewModel 12{ 13 class ValidationListViewModel 14 { 15 public ReadOnlyReactiveCollection<Test> TestListVM { get; } 16 17 public ValidationListViewModel() 18 { 19 TestListVM = TestData.Instance.TestList.ToReadOnlyReactiveCollection(); 20 } 21 } 22}

xaml

1<Window x:Class="ReactivePropertyTestApp.View.ValidationTestWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:ReactivePropertyTestApp.View" 7 xmlns:vm="clr-namespace:ReactivePropertyTestApp.ViewModel" 8 mc:Ignorable="d" 9 Title="ValidationTestWindow" Height="450" Width="800"> 10 11 <Window.DataContext> 12 <vm:ValidationTestWindowViewModel/> 13 </Window.DataContext> 14 15 <Grid> 16 <StackPanel VerticalAlignment="Center"> 17 <TextBox Width="200" Height="30" VerticalContentAlignment="Center" 18 Text="{Binding NameTextBox.Value,UpdateSourceTrigger=PropertyChanged}" 19 ToolTip="{Binding NameValidationErrorMessage.Value}"/> 20 <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> 21 <Button Content="保存" Width="50" Height="30" Click="Button_Click"/> 22 <Button Content="入れ替え" Width="50" Height="30" Click="Button_Click_1"/> 23 24 </StackPanel> 25 </StackPanel> 26 </Grid> 27</Window>

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.Windows; 7using System.Windows.Controls; 8using System.Windows.Data; 9using System.Windows.Documents; 10using System.Windows.Input; 11using System.Windows.Media; 12using System.Windows.Media.Imaging; 13using System.Windows.Shapes; 14 15using ReactivePropertyTestApp.ViewModel; 16 17namespace ReactivePropertyTestApp.View 18{ 19 /// <summary> 20 /// ValidationTestWindow.xaml の相互作用ロジック 21 /// </summary> 22 public partial class ValidationTestWindow : Window 23 { 24 private ValidationTestWindowViewModel viewModel; 25 26 public ValidationTestWindow(int pMode) 27 { 28 InitializeComponent(); 29 viewModel = this.DataContext as ValidationTestWindowViewModel; 30 if (pMode == 1) 31 { 32 viewModel.nameChange(); 33 } 34 } 35 36 private void Button_Click(object sender, RoutedEventArgs e) 37 { 38 viewModel.saveName(); 39 this.Close(); 40 } 41 42 private void Button_Click_1(object sender, RoutedEventArgs e) 43 { 44 viewModel.nameChange(); 45 } 46 } 47}

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6 7using Reactive.Bindings; 8using Reactive.Bindings.Extensions; 9 10using ReactivePropertyTestApp.Model; 11 12namespace ReactivePropertyTestApp.ViewModel 13{ 14 class ValidationTestWindowViewModel : ViewModelBase 15 { 16 [NameValidation] 17 public ReactiveProperty<string> NameTextBox { get; set; } 18 public ReadOnlyReactivePropertySlim<string> NameValidationErrorMessage { get; } 19 20 public ValidationTestWindowViewModel() 21 { 22 NameTextBox = new ReactiveProperty<string>().SetValidateAttribute(() => NameTextBox).AddTo(Disposables); 23 NameValidationErrorMessage = NameTextBox.ObserveValidationErrorMessage().ToReadOnlyReactivePropertySlim(); 24 } 25 26 public void nameChange() 27 { 28 NameTextBox.Value = TestData.Instance.TestList[0].Name; 29 } 30 31 public void saveName() 32 { 33 TestData.Instance.TestList.Add(new Test() { Name = NameTextBox.Value }); 34 } 35 } 36}

C#

1using System; 2using System.Collections.Generic; 3using System.ComponentModel.DataAnnotations; 4using System.Linq; 5using System.Text; 6using System.Threading.Tasks; 7 8namespace ReactivePropertyTestApp.Model 9{ 10 class NameValidationAttribute : ValidationAttribute 11 { 12 protected override ValidationResult IsValid(object value, ValidationContext validationContext) 13 { 14 var inputValue = value as string; 15 ErrorMessage = string.Empty; 16 17 if (string.IsNullOrWhiteSpace(inputValue) == true) 18 { 19 return new ValidationResult("値を入力してください。"); 20 } 21 22 if (inputValue.Count() > 8) 23 { 24 ErrorMessage = $"8文字以内で入力してください。"; 25 } 26 27 if (string.IsNullOrEmpty(ErrorMessage) == true) 28 { 29 return ValidationResult.Success; 30 } 31 else 32 { 33 return new ValidationResult(ErrorMessage); 34 } 35 } 36 } 37}

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6 7namespace ReactivePropertyTestApp.Model 8{ 9 class Test : BindableBase 10 { 11 private string name; 12 public string Name 13 { 14 get { return name; } 15 set { SetProperty(ref name, value); } 16 } 17 } 18}

イメージ説明
追加されているものを選択して編集ボタンを押すと
イメージ説明
正常な値が入力されているが赤枠になってしまう。
ToolTipには何も表示されない。

不足している情報があればご指摘ください。

試したこと

NameTextBoxのHasErrorは値セット後falseになっていることは確認出来ました。
下記URLが似ている内容っぽいのですがコードが確認出来ないのと、内容があまり理解できていません。
https://github.com/runceel/ReactiveProperty/issues/85

この方法なら赤枠が表示されなくなる等の情報をお持ちでしたらご教示いただけないでしょうか。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

最終的な結論は当該issueを確認してください。
2枚目以降のウィンドウでバリデーションエラー赤枠が残る · Issue #258 · runceel/ReactiveProperty

対応版がリリースされました。
ReactiveProperty 7.10.0 をリリースしました
Getting start for WPF | ReactiveProperty documentation

全部書き換えたい気分ですが^^; 経緯が分からなくなってしまうので残します。
が、以下は見る必要はありません。

はっきり言って分かってませんが、

* ReactivePropertyMode.IgnoreInitialValidationErrorを入れる
* Validation.ErrorTemplateを設定する

どちらかをしたら消えました。

そういう仕様(という名のバグ?)な気がします(深堀する気はありません)
一番手間がかからなそうな回避策はこんなんでしょうか?(バカバカしいがw

xml

1<Window.Resources> 2 <Style BasedOn="{StaticResource {x:Type TextBox}}" TargetType="{x:Type TextBox}"> 3 <Style.Triggers> 4 <Trigger Property="Validation.HasError" Value="False"> 5 <Setter Property="Validation.ErrorTemplate" Value="{x:Null}" /> 6 </Trigger> 7 </Style.Triggers> 8 </Style> 9</Window.Resources>

どこかに言及があると思いますし回避策も同じようなものだと思いますが、これといったところを見つけられませんでした^^;


最小限のコードを作って検証したところ、ReactivePropertyが何かおかしいです。
最初のWindowは問題ないのですが、そこからさらにWindowを開くと赤枠が残ります。

すべて最新版を使用、.NET48・.NET5とも同様。比較相手は↓です。
NuGet Gallery | CommunityToolkit.Mvvm 7.0.1
ObservableValidator - Windows Community Toolkit | Microsoft Docs

xml

1<Window 2 x:Class="Questions334418.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="clr-namespace:Questions334418" 6 Width="800" 7 Height="450"> 8 <Window.DataContext> 9 <local:ViewModel /> 10 </Window.DataContext> 11 <StackPanel VerticalAlignment="Center"> 12 <Button Click="Button_Click" Content="open" /> 13 <TextBox Text="{Binding RP_Text.Value, UpdateSourceTrigger=PropertyChanged}" /> 14 <TextBox Text="{Binding OV_Text, UpdateSourceTrigger=PropertyChanged}" /> 15 </StackPanel> 16</Window>

cs

1using CommunityToolkit.Mvvm.ComponentModel; 2using Reactive.Bindings; 3using System.ComponentModel.DataAnnotations; 4using System.Windows; 5 6namespace Questions334418 7{ 8 public partial class MainWindow : Window 9 { 10 public MainWindow() 11 { 12 InitializeComponent(); 13 14 // xamlのWindow.DataContextが残っていると上書きしようがおかしなまま。 15 //DataContext = new ViewModel(); 16 17 var vm = DataContext as ViewModel; 18 vm.RP_Text.Value = "a"; 19 vm.OV_Text = "a"; 20 } 21 22 private void Button_Click(object sender, RoutedEventArgs e) => new MainWindow().Show(); 23 } 24 25 public class ViewModel : ObservableValidator 26 { 27 [Required(ErrorMessage = "値を入力してください。")] 28 //[StringLength(8, ErrorMessage = "8文字以内で入力してください。")] 29 public ReactiveProperty<string> RP_Text { get; } 30 31 [Required(ErrorMessage = "値を入力してください。")] 32 //[StringLength(8, ErrorMessage = "8文字以内で入力してください。")] 33 public string OV_Text { get => text; set => SetProperty(ref text, value, true); } 34 private string text; 35 36 public ViewModel() => RP_Text = new ReactiveProperty<string>().SetValidateAttribute(() => RP_Text); 37 } 38}

コードでDataContextを設定するという回避法はあんまりなので(DIできないし挙動が変わるというのも気持ちが悪い)、ImmediateSchedulerを指定するのがいいのかもしれません。
それによりDataContextの設定方法によらず同じ挙動になりました。

ただしUIスレッドを複数作ってはいけない等の制限事項があります。
UI スレッドへのイベントの自動ディスパッチ

投稿2021/04/21 09:24

編集2023/07/26 16:13
TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dai49

2021/04/22 01:27

回答ありがとうございます。 IgnoreInitialValidationErrorは必須項目は最初からエラー表示させたほうが分かりやすいと思ったので見送りました。 Validation.ErrorTemplateで下記のように設定しましたが変わりませんでした。 どのように設定したかご教示いただけますでしょうか。 <Window.Resources> <ControlTemplate x:Key="ValidationTemp"> <Border BorderBrush="Red" BorderThickness="1" Width="{Binding ElementName=adornedElement, Path=ActualWidth}" Height="{Binding ElementName=adornedElement,Path=ActualHeight}" > <AdornedElementPlaceholder Name="adornedElement"/> </Border> </ControlTemplate> </Window.Resources>
TN8001

2021/04/22 04:20

> IgnoreInitialValidationErrorは必須項目は最初からエラー表示させたほうが分かりやすいと思ったので見送りました。 そうではないんです。私もそう思ったのですがやってみてください。 > どのように設定したかご教示いただけますでしょうか。 すいませんこれは消えたように見えただけでした^^; <Window.Resources> <ControlTemplate x:Key="ValidationTemplate"> <StackPanel> <ItemsControl ItemsSource="{Binding AdornedElement.(Validation.Errors), ElementName=adornedelem}"> <ItemsControl.ItemTemplate> <DataTemplate> <TextBlock Foreground="Red" Text="{Binding ErrorContent}" /> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> <AdornedElementPlaceholder x:Name="adornedelem" /> </StackPanel> </ControlTemplate> </Window.Resources> <Grid> <StackPanel VerticalAlignment="Center"> <TextBox Width="200" Height="30" VerticalContentAlignment="Center" Text="{Binding NameTextBox.Value, UpdateSourceTrigger=PropertyChanged}" ToolTip="{Binding NameValidationErrorMessage.Value}" Validation.ErrorTemplate="{StaticResource ValidationTemplate}" />
dai49

2021/04/22 05:01

回答ありがとうございます。 編集ボタンでの動作で赤枠が表示されないのはいいのですが、画像二枚目のWindowを追加ボタンと編集ボタンで使いまわしていて、.IgnoreInitialValidationErrorを指定してしまうと追加ボタンの時にTextBoxが空でもエラーにならないので、それを避けるのと何か設定不足や間違いがあると思い質問させていただきました。 説明不足で申し訳ございません。
TN8001

2021/04/22 05:20

失礼しました。編集ばかりあれこれやってましたw なるほどなかなか根深そうですね。 かずきさんでもわからないとなると、私程度ではどうにもなりそうにありません^^; (動作不良時に)目立たないErrorTemplateを当てるぐらいしか思いつきませんね。。。
dai49

2021/04/23 00:39

回答ありがとうございます。 編集していただいたコードでも赤枠は消えませんでした。 色々試していた結果、いまいち原因が分かっていませんが下記のように変更したら編集時も赤枠が消えました。 ValidationTestWindow.xamlの <Window.DataContext> <vm:ValidationTestWindowViewModel/> </Window.DataContext> を消して d:DataContext="{d:DesignInstance vm:ValidationTestWindowViewModel}" に変更し、コードビハインドでDataContextに代入する。 変更した経緯としましては、コンストラクタでの値変更は反映されるので引数で新規と編集で処理を分けようとしたためです。 コンストラクタを変更する前に動作させたら編集での赤枠表示が無くなっていました。 上記変更で正常になる要因についてお気づきになることがありましたらご教示いただけますでしょうか。
TN8001

2021/04/23 04:36

スタイルはValidationTestWindowに入ってるんですよね? 「HasError=false だけど赤枠が残ってしまう」 という症状だから、 HasError じゃなかったら ErrorTemplate をなしにする というバカバカしいトリガーなわけですが、それが効かないっていうのはちょっと考えにくいですねぇ。 何か提示コード外の要因があると思います。こちらでは再現できません。 > 上記変更で正常になる要因 原因はわかりました。理由はわかりません^^; 解消法はdai49さんの通り「xamlをやめる」です。
Hey_CH

2021/04/23 05:53

こちらで同じ現象を再現できているかはわかりませんが、 XAMLをやめた場合「this.DataContext = viewModel;」のような感じにすると思うのですが これを「InitializeComponent();」より上に記述すると、現象が再発しませんか? 現象が再発したとき「if (pMode == 1) viewModel.nameChange();」も「InitializeComponent();」より上に記述すると、赤枠が無くなる、という風になりました。 これが何を意味するかは僕には全くわかりません。 (詳しい人が見たら、あそこが悪いんじゃね?って気づく可能性)
dai49

2021/04/23 07:14

TN8001様 別のStyleが当たっていたのが原因でした。 こちらでも赤枠が消えることが確認出来ました。 失礼いたしました。 Hey_CH様 こちらでも記載いただいた内容にすると現象が再現しました。 私も原因については分からないので、ひとまずはInitializeComponent();を行った後にDataContextへの代入を行う必要がありそうですね。
Hey_CH

2021/04/23 12:24

TN8001さん ありがとうございます!
Hey_CH

2021/04/24 10:02 編集

new ReactiveProperty<string>(mode: ReactivePropertyMode.Default | ReactivePropertyMode.IgnoreInitialValidationError)を試してみたのですが TN8001さんの最小限のコードではうまくいくのですが 質問者さんのコードでは、空文字列を追加した後、編集ボタンを押すと赤枠が表示されません。(報告) 【追記】 この赤枠が表示されない原因はViewModelのプロパティに「null」を設定するとIsValid関数自体が呼び出されない事によるものだという事がわかりました。(これで良いの?とは思うが、本件とは関係無し)
dai49

2021/04/26 00:18

TN8001様 聞いていただきありがとうございます。 Hey_CH様 確か.IgnoreInitialValidationErrorは初回のエラーをスキップするというオプションだったと思いますので、初回のnullエラーはスキップされたため赤枠は表示されないのではないでしょうか。
Hey_CH

2021/04/26 01:58

dai49さん 文字列が長い場合は赤枠が表示されるんですよね~。 【追記】した現象は、追加ボタンを押した後、何もせずに保存ボタンを押して追加後、編集ボタンを押すと赤枠が表示されないというものですね。 (空文字列が設定されてるかと思ってたらnullが設定されていて、その時IsValidが呼ばれない) なので、この質問の問題とは別に「NameValidationのような事をする場合nullが設定されないようにしなければいけない」という事があるかもしれません。
dai49

2021/04/26 02:59

初期値がnullのため、何も入力しないとnullで保存されてしまっていることと、mode: ReactivePropertyMode.Defaultが設定されているので、初期値null→nameChange()でnull代入で値が変化していないのでIsValidが呼ばれない?と思いました。 試しにReactivePropertyMode.Defaultを外したら ・追加画面では赤枠なし ・何もせずに保存ボタンを押して追加後、編集ボタンを押すと赤枠が表示されました。
Hey_CH

2021/04/26 04:18

すいません、TN8001さんが書いてくださった最小限のコードでnullを設定したときIsValidが呼ばれなかったのでValidationAttributeの基本的動作が「nullが設定された場合IsValidを呼ばない動き」をするものだと思い込んでいました。 ReactivePropertyにおいてDefault(DistinctUntilChanged)では値が変わった時にIsValidを呼ぶんですね。 (但し、null以外の値からnullに変わった場合はIsValidは呼ばれない→ややこしい) お騒がせして申し訳ありませんでした。
dai49

2021/04/26 08:28

Hey_CH様 いえ、動作確認していただきありがとうございます。 null以外の値からnullに変わった場合はIsValidは呼ばれない動作になっているのですね。
okazuki0130

2021/04/26 13:46

Issue での報告ありがとうございました、この挙動を改善する方法を確認したので Issue のほうに記載してみました。 因みに、null 以外の値から null に変わったときに IsValid が呼ばれない件ですが、これって ValidationContext を直接使って null 値の入っているプロパティを検証してみても同じ挙動になりませんか??
dai49

2021/04/27 01:34

TN8001様 okazuki0130様 ご対応いただきありがとうございます。 いただいた対応方法で自分のコードでもTN8001様のコードでも期待通りの動作になることが確認出来ました。 ただ全く理解ができていないので、勉強します。 IsValid が呼ばれない件は先ほど動作確認してみたところ、こちらの環境だとnullのときもIsValidが呼ばれる動作になっていたのですが、.Valueに直接null代入する方法で問題ないでしょうか。
Hey_CH

2021/04/27 02:08

okazuki0130さん IsValidが呼ばれない件にも言及いただきありがとうございます。 ただ、浅学のため「ValidationContextを直接使って検証する」という意味がわからず var vm=new ViewModel(); var context = new ValidationContext(vm, null, null); var results = new List<ValidationResult>(); var isValid = Validator.TryValidateObject(vm, context, results, true); みたいな感じでやってみたところ、普通にIsValidが呼ばれました。 また、TN8001さんのコードにViewModelのプロパティにnullを設定するボタンを追加してみたところ、これもIsValidが呼ばれました。 そのため、この現象は、僕が質問者さんのコードを動くようにした状況でしか発生しないものだと考えられます。 大変お騒がせして申し訳ありませんでした。 (ちなみに、質問者さんのコードのpublic ValidationTestWindow(int pMode)メソッドのviewModel.nameChange();の部分をviewModel.NameTextBox.Value = null; に書き換えて実行し、追加ボタン押下時のウィンドウで適当な文字列を入力し、保存ボタン押下後、編集ボタンを押すとIsValidが呼ばれないという現象が発生しました。)
okazuki0130

2021/05/02 07:41

ReactiveProperty 7.10.0でこの質問の問題への対応を入れました。 ReactiveProperty.WPFパッケージを追加して(ReactivePropertyパッケージは依存関係にあるので、プロジェクト内で追加してる場合は削除して大丈夫です)ください。 Reactive.Bindings.Schedulers.ReactivePropertyWpfScheduler が今回追加したスケジューラになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問