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

发布于 2024-11-02 10:02:47 字数 624 浏览 0 评论 0原文

我在 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}" />

到目前为止,我能想到的唯一解决方案是使用值转换器(即像 CollectionToVisibilityShowIfNull、CollectionToVisibilityShowIfNotNull 这样的转换器)将 Locks 属性绑定到可见性,但我不确定这是否是最佳解决方案。

... Visibility={Binding Locks, Converter={StaticResource CollectiontoVisibilityShowIfNull}} ..

感谢您的帮助!

I have this line in WPF (.NET 3.5) :

<ListBox ItemsSource="{Binding Locks}" Style="{DynamicResource FancyListBox}" />

My desired behavior is that when the property Locks (an ObservableCollection) is either null or contains 0 elements, show a label like the one below instead of the ListBox.

<Label Content="No locks are present" Style="{DynamicResource FancyLabel}" />

The only solution I can think of so far is to bind the Locks property to visibility using a valueconverter (i.e. converters like CollectionToVisibilityShowIfNull, CollectionToVisibilityShowIfNotNull), but I am not sure if that is the best solution.

... Visibility={Binding Locks, Converter={StaticResource CollectiontoVisibilityShowIfNull}} ..

Thanks for any help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尾戒 2024-11-09 10:02:47

这是我通常做的事情:

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

Here's what I usually do:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文