C# ListView中是否有空值的特殊模板或语法?
我有一个列表视图:C# ListView中是否有空值的特殊模板或语法?,c#,wpf,C#,Wpf,我有一个列表视图: myListView.ItemsSource = GetSomeData(); 如果在GetSomeData()中的一个项目中,其中一个字段恰好为空,我如何在GUI上显示它,就像“[值未知]”一样,而不必检查“cs”文件中是否为空?是否有空值的特殊模板?您可以创建两个数据模板:一个用于存在的项,另一个用于nulls。然后,您可以使用来确定应将哪个模板用于哪个项目,如以下所示(将模板关键点调整为您使用的关键点): 要在ListView上使用它,只需添加 myListView.
myListView.ItemsSource = GetSomeData();
如果在
GetSomeData()
中的一个项目中,其中一个字段恰好为空,我如何在GUI上显示它,就像“[值未知]”
一样,而不必检查“cs”文件中是否为空?是否有空值的特殊模板?您可以创建两个数据模板:一个用于存在的项,另一个用于null
s。然后,您可以使用来确定应将哪个模板用于哪个项目,如以下所示(将模板关键点调整为您使用的关键点):
要在ListView上使用它,只需添加
myListView.ItemTemplateSelector = new MyTemplateSelector();
以上是我推荐的方法,但如果您真的坚持纯粹在XAML中执行此操作,可以尝试以下方法:
<ListView.ItemTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding}">
<ContentPresenter.Style>
<Style TargetType="ContentPresenter">
<Setter Property="ContentTemplate" Value="{StaticResource ItemTemplate}" />
<Style.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Null}">
<Setter Property="ContentTemplate" Value="{StaticResource NullTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentPresenter.Style>
</ContentPresenter>
</DataTemplate>
</ListView.ItemTemplate>
我在这里做的是在ItemTemplate中添加另一个ContentPresenter,并在绑定值上使用触发器来确定应该使用哪个实际模板。创建一个自定义转换器类,并在绑定时使用它,并使用
value=“{x:NULL}”
在XAML中,您可能还想查看哪些不是答案,但可以让您一瞥如何处理nulls@MohitShrivastava,准确程度如何?无需检查“cs”中是否为空file@jawanam请参见“编辑”以获取备选方案,纯XAML方法它会自动为任何列中的任何空值工作吗?@jawanam ListView没有列;这将显示ItemsSource集合中的值为null的行的NullTemplate。当然,您可以在ItemTemplate中包含列,但是您必须单独处理任何可能的空值。
<ListView.ItemTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding}">
<ContentPresenter.Style>
<Style TargetType="ContentPresenter">
<Setter Property="ContentTemplate" Value="{StaticResource ItemTemplate}" />
<Style.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Null}">
<Setter Property="ContentTemplate" Value="{StaticResource NullTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentPresenter.Style>
</ContentPresenter>
</DataTemplate>
</ListView.ItemTemplate>