2012-03-26 30 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的选定项目也可以在您的视图模型上,并通过数据绑定连接到您的视图,从而允许所有内容发生在你的视图模型中,并且很好地设置自己以便单元测试你正在寻找的行为。

相关问题