2012-03-26 16 views
0

SilverlightアプリケーションでComboBoxを使用して、データバインディングを使用してViewModelのプロパティ値に基づいて可視性を変更しました。ComboBoxが表示されたら最初のアイテムを選択します。

<ComboBox x:Name="Combo1" ... 
      Visibility="{Binding MyProperty, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}"> 
    ... Some hard coded ComboBoxItems ... 
</ComboBox> 

BooleanToVisibilityConverterは/表示コンボボックスを非表示にする適切な可視性値にブール値に変換するコンバータクラスである:ここでコンボボックスXAMLです。

これは素晴らしいですが、私ができるようにしたいのは、コンボボックスが表示されるたびに最初のアイテムを選択したい場合です。したがって、ユーザーがComboBoxから項目を選択し、ComboBoxが非表示になるようにフォームを操作した後、ComboBoxを再表示するように変更した場合、ComboBoxでユーザーが選択した項目ではない最初の項目を表示します。

ありがとうございます!

答えて

1

これは、コンバータを使用するのではなく、MVVMパターンが役立つ典型的なシナリオです。ビューモデルには、ComboBoxのVisibleプロパティにバインドされたデータであるVisibilityプロパティを含めることができます。次に、(ビューモデル上の)バインドされたVisibilityプロパティの設定で、コンボボックスの最初の項目を選択したビューモデルのメソッドを呼び出すことができます。 How can you get a XAML TextBlock in WP7 Silverlight to collapse when it contains no data?

コンボボックスの選択項目に沿って、あなたのコンボボックスがバインドされているコレクションは、またあなたのビューモデルになると、データバインディングを経由して、あなたのビューにフック、ためにすべてを許可することができます:ここでは、このように見えることができるものの例です。あなたのビューモデルで行われ、あなたが探している振る舞いをユニットテストにうまく合わせることができます。

関連する問題