gpt4 book ai didi

c# - 显示 ItemsControl.ItemsSource 是否为 null

转载 作者:太空狗 更新时间:2023-10-29 23:10:39 26 4
gpt4 key购买 nike

问候,

我有一个 ItemsControl,我更改了它的模板,以便为绑定(bind)的 ItemsSource 中的每个对象显示一个 RadioButton。

但是 ItemsSource 可以为空,当它为空时我想显示一个默认值。类似“绑定(bind)列表不包含供您选择的项目”之类的东西......

我想到的一种方法是将 ItemsControl.Visibility 设置为 Collapsed 并将 TextBlock.Vsibility 设置为 Visible 以显示文本。但这将包含更多数据。

如果 ItemsControl.ItemsSource 为空,是否可以显示默认值?

最佳答案

创建这个简单的转换器后:

public class AnyItemsToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var collection = value as IEnumerable;
if (collection == null)
return Visibility.Collapsed;

return collection.OfType<object>().Any() ? Visibility.Collapsed : Visibility.Visible;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

您可以覆盖 ItemsControl 模板以使用 RelativeSource 绑定(bind)来支持这一点。

<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SilverlightApplication1">
<UserControl.Resources>
<local:AnyItemsToVisibilityConverter x:Key="AnyItemsToVisibilityConverter" />
</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White">
<ItemsControl>
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<Grid>
<TextBlock Text="No Items to Display"
Visibility="{Binding Items, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource AnyItemsToVisibilityConverter}}" />
<ItemsPresenter />
</Grid>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
</Grid>
</UserControl>

关于c# - 显示 ItemsControl.ItemsSource 是否为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5977096/

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