DataGrid 绑定 - 不显示列表中的空条目
我有以下 XAML
<DataGrid Name="grid">
<DataGrid.Columns>
<DataGridTextColumn Header="Technology" Binding="{Binding Name}" />
<DataGridTextColumn Header="Version" Binding="{Binding Number}" />
</DataGrid.Columns>
</DataGrid>
和以下类
public class Data
{
public List<Technology> Technologies { get; set; }
}
public class Technology
{
public string Name { get; set;}
public int Number { get; set; }
}
列表 Technologies
是数据网格的数据源。此解决方案在数据网格中包含所有列表项。
我只想显示 Number
不为空的项目。实现这一目标的最佳方法是什么?
I have following XAML
<DataGrid Name="grid">
<DataGrid.Columns>
<DataGridTextColumn Header="Technology" Binding="{Binding Name}" />
<DataGridTextColumn Header="Version" Binding="{Binding Number}" />
</DataGrid.Columns>
</DataGrid>
And following classes
public class Data
{
public List<Technology> Technologies { get; set; }
}
public class Technology
{
public string Name { get; set;}
public int Number { get; set; }
}
List Technologies
is the source of data for datagrid. There are all list items in datagrid by this solution.
I want show only items where Number
is not null. What is the best way to achieve it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当您将集合设置为 ItemsSource 时,通过
ListCollectionView
执行此操作...有一个像这样的谓词...
虽然是一个奇怪的问题,但您的
Number
属性是 < code>int 不是int?
怎么可能是 Null?另外,我建议您使用
ObservableCollection
,以便在Number
更改时自动过滤。还要确保Technology
已实现INotifyPropertyChanged
。When u set the collection to the ItemsSource, do it via a
ListCollectionView
...Have a predicate like this....
Although a curious question, your
Number
property isint
notint?
how can it be Null?Also I suggest you to use
ObservableCollection<Technology>
for your benefit of auto filtering whenNumber
changes. Also make sureTechnology
hasINotifyPropertyChanged
implemented.您可以在
DataGridRow
上使用DataTrigger
或者,您可以将
DataGridRow
的Visibility
绑定到Number
> 并使用一个转换器,它返回Visibility.Collapsed
为null
和Visibility.Visible
否则You can use a
DataTrigger
onDataGridRow
Alternatively you could bind
Visibility
forDataGridRow
toNumber
and use a Converter which returnsVisibility.Collapsed
fornull
andVisibility.Visible
otherwise