0

我正在使用 WPF。我正在使用数据网格在其中动态添加项目。

最初加载应用程序时,datagrid 为空,或者当 datagrid 中的所有项目都被删除时,它只显示 datagrid 标题。

如何删除标题,并显示“请插入项目”之类的消息。当数据网格为空时。

4

1 回答 1

2

我会IValueConverter为此使用一个。直接绑定到 Items 源,当它为 null/empty 时,然后 return Visibility.Collapsed。将文本通知添加为TextBlock,并使用参数否定转换器。

<TextBlock Text="There are no items" 
    Visibility="{Binding Items,
        Converter={StaticResource ItemsToVisibilityConverter},ConverterParameter=negate}" />
<DataGrid Visibility="{Binding Items,
        Converter={StaticResource ItemsToVisibilityConverter}}">
</DataGrid>

转换器必须使用ConverterParameter

public class ItemsToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var items = value as IEnumerable<object>;
        bool isVisible = items != null && items.Count() > 0;
        if ((string)parameter == "negate") isVisible = !isVisible;
        return isVisible ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
于 2012-09-27T01:16:23.113 回答