我在WPF(.NET 3.5)中有这一行:
<ListBox ItemsSource="{Binding Locks}" Style="{DynamicResource FancyListBox}" />
我希望的行为是当属性Locks(一个ObservableCollection)为null或包含0个元素时,显示一个类似下面的标签而不是ListBox。
<Label Content="No locks are present" Style="{DynamicResource FancyLabel}" />
到目前为止,我能想到的唯一解决方案是使用valueconverter(即CollectionToVisibilityShowIfNull,CollectionToVisibilityShowIfNotNull等转换器)将Locks属性绑定到可见性,但我不确定这是否是最佳解决方案。
... Visibility={Binding Locks, Converter={StaticResource CollectiontoVisibilityShowIfNull}} ..
感谢您的帮助!
答案 0 :(得分:5)
这是我通常做的事情:
<Grid>
<ListBox Name="lstLocks" ItemsSource="{Binding Locks}" Style="{DynamicResource FancyListBox}" />
<Label Name="lblNoLocks" Content="No locks are present" Style="{DynamicResource FancyLabel}" Visibility="Collapsed" />
</Grid>
...
<DataTrigger Binding="{Binding Locks.Count}" Value="0">
<Setter TargetName="lstLocks" Property="Visibility" Value="Collapsed" />
<Setter TargetName="lblNoLocks" Property="Visibility" Value="Visible" />
</DataTrigger>