gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:21:10 25 4
gpt4 key购买 nike

我在 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 属性绑定(bind)到可见性,但我不确定这是否是最佳解决方案。
... 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>

关于wpf - 当 ItemsSource 为空或 null 时,MVVM WPF 将 ListBox 替换为 Label,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5735115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com