2011-07-24 5 views
3

私は以下の2つのコントロールを持っていると言います。自動的にバインドされたコンボボックスからアイテムを選択しますか? Silverlight

<ListBox ItemsSource="{Binding Path=Events}" 
     DisplayMemberPath="Name" 
     SelectedItem="{Binding SelectedEvent, Mode=TwoWay}" 
     Grid.Column="0" Grid.RowSpan="4" Margin="5"/> 

<ComboBox x:Name="VenueBox" 
      ItemsSource="{Binding Path=VenueNames}" 
      SelectedItem="{Binding Path=SelectedVenueName, Mode=TwoWay}" 
      Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" 
      Margin="10"/> 

のListBoxは、カスタムクラスを "保持" のObservableCollectionにバインドされています。 ComboBoxはObservableCollectionの文字列にバインドされています。カスタムクラスには、コンボボックスの値である文字列プロパティがあります。私が欲しいのは、ListBoxで項目を選択し、その値をComboBoxから自動的に選択する場合です。純粋なXAMLやコードビハインドでのいくつかのアクションが必須であるか?私の説明がはっきりしていることを願っています。ありがとうございました。

+0

MVVMをまったく使用していますか?これは、ビューモデルがこのすべてのロジックをあなたのために行うことができる素晴らしい例です。 – CodingGorilla

答えて

0

私はここの行を読むつもりです。イベントを表す「イベント」クラスがあります。イベントは、ある日時に発生し、私たちが "Venue"と呼ぶ場所で発生します。 "Event"クラスは、会場の名前である文字列プロパティを持っています。

可能な会場名のリストもあります。

バインドするオブジェクトには、タイプが「イベント」のSelectedEventプロパティと、タイプstringSelectedVenueプロパティがあります。適用するルールは、リストボックスでイベントが選択された場合、SelectedVenueはイベントで指定された会場のみになることができます。

実際の質問は次のとおりです:このルールの適用はどこにありますか?

これは実際に適用するビューの仕事ではありません。あなたが拘束しているモデルは、このルールに注意する必要があります。 SelectedEventプロパティセッターのコードでは、正しい値SelectedVenueが適用されていることを確認する必要があります。

ビューにはモデルの現在の状態が反映されますが、ビューの「正しい」状態が理解できないのはモデルの責任です。あなたはコンボボックスのSelectedItemをバインドするために余裕があれば

+0

アンソニー、ありがとう、私はあなたが書いたことをしたし、それは魅力のように働いた。 – rescueme

1

異なっ(すでにSelectedEventを持っているので、専用の性質を持つことがとにかく余計なようだ)、これはそれを行う必要があります。

SelectedItem="{Binding Path=SelectedEvent.Venue, Mode=TwoWay}" 

(私はしないでください会場のプロパティの実際の名前を知っているので、モデルに合わせる必要があります)

+0

@rescueme:喜んでお手伝いしました:) –

+0

「余分な」プロパティが必要ない場合は、ありがとうございます。私はあなたとアンソニーの両方の答えを受け入れることができたらいいと思う。 – rescueme

+0

@rescueme:もしあなたが好きなら私の答えをupvoteすることができます:) –

関連する問題