当ItemsSource为空或null时,MVVM WPF将ListBox替换为Label

当ItemsSource为空或null时,MVVM WPF将ListBox替换为Label,wpf,collections,mvvm,visibility,Wpf,Collections,Mvvm,Visibility,我在WPF(.NET 3.5)中有这一行: 谢谢你的帮助 以下是我通常做的事情: <Grid> <ListBox Name="lstLocks" ItemsSource="{Binding Locks}" Style="{DynamicResource FancyListBox}" /> <Label Name="lblNoLocks" Content="No locks are present" Style="{DynamicResource Fa

我在WPF(.NET 3.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>

...

以下是我通常做的事情:

<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>

...

我忘了提到这是在一个数据模板中发生的,所以我不确定使用Name是否有效,但确实有效!感谢您Thomasboo,WP7不提供:(你应该在哪里添加DataTrigger?Window.Triggers需要EventTriggers。@Muffinman,你可以根据情况在DataTemplate或样式中添加它。但是现在我倾向于在ViewModel中添加一个特定属性,并用BooleanToVisibilityConverterI将可见性绑定到它。我忘了在dat中提到这一点A模板,所以我不确定使用名称是否有效,但确实有效!谢谢您,Thomasboo,WP7不可用:(你应该在哪里添加DataTrigger?Window.Triggers需要EventTriggers。@Muffinman,你可以根据情况在DataTemplate或样式中添加它。但是现在我倾向于在ViewModel中添加一个特定属性,并使用BooleanToVisibilityConverter将可见性绑定到它
... Visibility={Binding Locks, Converter={StaticResource CollectiontoVisibilityShowIfNull}} ..
<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>