2012-03-26 57 views
0

我在Silverlight應用程序中有一個ComboBox,它使用數據綁定根據ViewModel中的屬性值更改其可見性。這裏是ComboBox XAML:當組合框變爲可見時,請選擇第一個項目

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

BooleanToVisibilityConverter是一個轉換器類,一個布爾值轉換成相應的可見度的值,顯示/隱藏組合框。

這個效果很好,但是我希望能夠做的是每當ComboBox變得可見時我想選擇第一個項目。因此,如果用戶從ComboBox中選擇一個項目,然後操作該窗體以便隱藏ComboBox,然後再進行重新顯示ComboBox的更改,我希望ComboBox顯示第一個項目而不是用戶選擇的項目。

謝謝!

回答

1

這是一個經典的場景,MVVM模式可以幫助您,而不是使用轉換器。您的視圖模型可能包含一個Visibility屬性,該屬性將綁定到您的ComboBox的Visible屬性。然後,在綁定的Visibility屬性的設置器中(在視圖模型上),您可以調用視圖模型上的一個方法來選擇ComboBox中的第一個項目。下面是一個例子:How can you get a XAML TextBlock in WP7 Silverlight to collapse when it contains no data?

您的ComboBox綁定的集合以及ComboBox的選定項目也可以在您的視圖模型上,並通過數據綁定連接到您的視圖,從而允許所有內容發生在你的視圖模型中,並且很好地設置自己以便單元測試你正在尋找的行爲。

相關問題