You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio中ListView ItemTemplate无法正常显示文本问题排查

问题原因及解决办法

你的ListView只定义了ItemTemplate(数据项的UI模板),但没有提供任何数据项——ItemTemplate是用来渲染每一条数据的UI样式,没有数据的话,模板根本不会被实例化,自然看不到"hello"文本。

当你在</ListView.ItemTemplate>和</ListView>之间添加其他控件时,相当于手动给ListView的Items集合添加了元素,此时ListView有了数据项,就会用你定义的ItemTemplate去渲染这些项,所以能看到TextBlock内容。


解决方法1:手动添加数据项

直接在ListView标签内添加数据项(因为你的模板Text是硬编码的"hello",可以直接加空的ListViewItem):

<ListView BorderBrush="White" BorderThickness="1" Height="266" 
          Width="585" Canvas.Left="33" Canvas.Top="89" 
          HorizontalAlignment="Center" VerticalAlignment="Top" SelectionMode="None">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Border Width="103">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <TextBlock Grid.Row="0" Width="200" HorizontalAlignment="Stretch" x:Name="firstRowTextBlock" Text="hello"  FontSize="14" Foreground="White"/>
                </Grid>
            </Border>
        </DataTemplate>
    </ListView.ItemTemplate>
    <!-- 添加数据项,数量按需调整 -->
    <ListViewItem/>
    <ListViewItem/>
</ListView>

解决方法2:绑定数据源(更适合实际项目)

如果是WPF/UWP项目,推荐通过绑定数据源的方式给ListView提供数据,示例如下:

后台C#代码

using System.Collections.ObjectModel;
using System.Windows;

public partial class MainWindow : Window
{
    // 定义数据源集合
    public ObservableCollection<string> ItemList { get; set; }

    public MainWindow()
    {
        InitializeComponent();
        // 填充数据
        ItemList = new ObservableCollection<string> { "数据项1", "数据项2", "数据项3" };
        // 设置数据上下文
        DataContext = this;
    }
}

修改后的XAML代码

<ListView BorderBrush="White" BorderThickness="1" Height="266" 
          Width="585" Canvas.Left="33" Canvas.Top="89" 
          HorizontalAlignment="Center" VerticalAlignment="Top" SelectionMode="None"
          ItemsSource="{Binding ItemList}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Border Width="103">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <TextBlock Grid.Row="0" Width="200" HorizontalAlignment="Stretch" x:Name="firstRowTextBlock" Text="hello"  FontSize="14" Foreground="White"/>
                </Grid>
            </Border>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

注:如果需要显示数据源中的内容,可将TextBlock的Text="hello"改为Text="{Binding}",这样会直接显示ItemList中的字符串内容。

内容的提问来源于stack exchange,提问作者user22981109

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:52:49