質問編集履歴

1 どこでエラーするのかの記載が漏れておりました。

kkkkk12

kkkkk12 score 8

2020/03/25 16:12  投稿

c# ReactiveProperty と ReactiveCollection を使用しButtonの有効無効を制御したい
### 前提・実現したいこと
c# ReactivePropertyとReactiveCollection を使用し、ある条件をみたした場合にボタンが実行可能になるようにしたいです。
具体的には
Entryに値を入力し、Buttonを押すと その値がCollectionViewに追加されます。
Entryの値が空の場合や、すでに同じ値がCollectionViewに存在する場合はButtonを無効化したいです。
### 発生している問題・エラーメッセージ
CS0411   メソッド 'Observable.CombineLatest<TSource1, TSource2, TResult>(IObservable<TSource1>, IObservable<TSource2>, Func<TSource1, TSource2, TResult>)' の型引数を使い方から推論することはできません。型引数を明示的に指定してください  
下記のままではビルドエラーがでるので 、.ToObservable()やObserveProperty() を付けてとやってみたのですが、変わらず。
上記のようなエラーがでるので 、.ToObservable()やObserveProperty() を付けてとやってみたのですが、変わらず。
### 該当のソースコード
```xaml
  <Entry Text="{Binding InputSerial.Value}" />
  <Button Command="{Binding BtnInputSerial}" />
  <CollectionView ItemsSource="{Binding ItemSerialsUse}" />
```
```c#
//宣言部
public ReactiveProperty<string> InputSerial { get; set; } = new ReactiveProperty<string>();
public AsyncReactiveCommand BtnInputSerial { get; set; }
public ReactiveCollection<string> ItemSerialsUse { get; set; } = new ReactiveCollection<string>();
//コンストラクタ
//コンストラクタ ここでVisial Studioがエラー警告してきます。
this.BtnInputSerial = this.InputSerial.CombineLatest(this.ItemSerialsUse , (x, y) =>
    (!string.IsNullOrWhiteSpace(x) && !y.Any(z => z == x))
    .ToReactiveProperty().ToAsyncReactiveCommand();
```
### 補足情報(FW/ツールのバージョンなど)
Visual Studio Profesisonal 2019 Version 16.4.6
.NET Standard 2.1
Xamarin.Forms 4.5.0.356
ReactiveProperty 6.2.0
Prism.Unity.Forms 7.2.0.1422
  • C#

    12193 questions

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

  • Xamarin

    743 questions

    Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る