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>