我正在使用 WPF。我正在使用数据网格在其中动态添加项目。
最初加载应用程序时,datagrid 为空,或者当 datagrid 中的所有项目都被删除时,它只显示 datagrid 标题。
如何删除标题,并显示“请插入项目”之类的消息。当数据网格为空时。
我会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();
}
}