そのユーザーコントロールのビューモデルのコレクションにバインドされた4つのコンボボックスを持つUserControlがあります。
このコントロールをwpf形式で使用しました。このwpfフォームには、独自のビューモデルがあります。
wpfフォームのビューモデル内の4つのコンボボックスからテキストにアクセスするにはどうすればよいですか?
そのユーザーコントロールのビューモデルのコレクションにバインドされた4つのコンボボックスを持つUserControlがあります。
このコントロールをwpf形式で使用しました。このwpfフォームには、独自のビューモデルがあります。
wpfフォームのビューモデル内の4つのコンボボックスからテキストにアクセスするにはどうすればよいですか?
UserControlは、ビューモデルとなる追加するフォームのデータコンテキストを継承する必要があります。UserControlのバインディングは、継承されたデータコンテキストに関連します。ビューモデルプロパティにバインドしようとしましたComboBox.Text
か?
アップデート
申し訳ありませんが、質問を読み間違えました。ユーザーコントロールにすでに独自のビューモデルがあることを確認しませんでした。
より良いアプローチがあるように見えますが、各コンボボックスのテキストを公開するユーザーコントロールの依存関係プロパティを公開することができます。大声で考えているだけです。
これを行う唯一のクリーンな方法はバインディングを使用することです。推奨される唯一の方法は、ユーザーコントロールDependencyProperty
がViewModelまたは個々のテキストプロパティ(sellmeadogによって提案された)を消費用に公開する場合です。次に、その依存関係プロパティに直接バインドするプロパティを親ViewModelに含めることができます。
編集:私はあなたが異なるビューモデルを持っているのを見ました。今では、ユーザーコントロールの使用とmvvmの使用に依存します:)
古い例:ビューモデル内://実際のコードはもちろんINotifyPropertyChanged
適切に実装して発生させる必要があります
public ObservableCollection<string> MyFirstCollection {get; set;}//init once, add,remove,clear to alter
public string MySelectedCombobox1Value {get;set;}
ユーザーコントロールで:
<ComboBox ItemsSource="{MyFirstCollection }" SelectedItem="{Binding MySelectedCombobox1Value, Mode=TwoWay}" />
それはすべてあなたの質問に関連しています。必ず正しく設定してくださいDataContext
。これは、snoopなどのツールで確認できます。私が投稿したコードは、コンボボックスのdataconextがビューモデルであることを期待していました。