我在Silverlight应用程序中有一个ComboBox,它使用数据绑定根据ViewModel中的属性值更改其可见性。这是ComboBox XAML:
<ComboBox x:Name="Combo1" ...
Visibility="{Binding MyProperty, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}">
... Some hard coded ComboBoxItems ...
</ComboBox>
BooleanToVisibilityConverter
是一个转换器类,它将布尔值转换为适当的Visibility值以显示/隐藏ComboBox。
这很好用,但是我想能够做的是每当ComboBox变得可见时我想选择第一个项目。因此,如果用户从ComboBox中选择一个项目然后操作表单以便隐藏ComboBox,那么稍后进行更改以重新显示ComboBox,我希望ComboBox显示第一个项目而不是用户选择的项目。
谢谢!
答案 0 :(得分:1)
这是一个经典场景,MVVM模式可以帮助你,而不是使用转换器。您的视图模型可以包含Visibility属性,该属性是绑定到ComboBox的Visible属性的数据。然后在绑定的Visibility属性的setter中(在视图模型上),您可以在视图模型上调用选择ComboBox中第一个项目的方法。以下是一个示例:How can you get a XAML TextBlock in WP7 Silverlight to collapse when it contains no data?
ComboBox绑定的集合以及ComboBox的选定项目也可以在您的视图模型上并通过数据绑定挂钩到您的视图,从而允许在视图模型中进行所有操作,以及设置自己很好地对您正在寻找的行为进行单元测试。