有没有办法在 Xamarin C# 中的 ListView 的列上方创建列名

Posted

技术标签:

【中文标题】有没有办法在 Xamarin C# 中的 ListView 的列上方创建列名【英文标题】:Is there a way to create a column names above the columns from ListView in Xamarin C# 【发布时间】:2021-03-09 03:49:06 【问题描述】:

我有一个来自 ListView 的三列和网格。有没有办法在列上方创建名称...现在它们看起来像那样。

ListView without column names

listview 的代码如下所示:

           <StackLayout>
              <ListView BackgroundColor="#d3d3d3"
                        x:Name="MeteoView"
                        ItemsSource="Binding Forecast"
                        HeightRequest="132"
                        IsVisible="false"
                        RowHeight="46">
                <ListView.ItemTemplate>
                  <DataTemplate>
                  <ViewCell>

                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                                  

                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="30*" />
                                    <ColumnDefinition Width="30*" />
                                    <ColumnDefinition Width="30*" />
                                </Grid.ColumnDefinitions>

                        <Label Grid.Column="0" Text="Binding DisplayDat"/>
                        <Label Grid.Column="1" Text="Binding DisplayT_2M"/>
                        <Label Grid.Column="2" Text="Binding DisplayVmax_10M"/>
                        
                    </Grid>
                </ViewCell>
                  </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </StackLayout>

如何设置静态字符串以在每一列上显示名称?

【问题讨论】:

您可以在 ListView 上方添加一个视图,其中包含显示列标题的类似网格。如果您希望它与内容一起滚动,您可以使用 ItemTemplate 选择器添加它。 你能给我举个例子吗? 同意@Cheesebaron,你可以查看我的答案。 【参考方案1】:

选项 1:

您可以设置 ListView

Header
<ListView.Header>
   <Grid>
       <Grid.RowDefinitions>
               <RowDefinition Height="Auto" />
       </Grid.RowDefinitions>
                                  

       <Grid.ColumnDefinitions>
            <ColumnDefinition Width="30*" />
            <ColumnDefinition Width="30*" />
            <ColumnDefinition Width="30*" />
       </Grid.ColumnDefinitions>

       <Label Grid.Column="0" Text="xxx"/>
       <Label Grid.Column="1" Text="xxx"/>
       <Label Grid.Column="2" Text="xxx"/>
                        
   </Grid>
</ListView.Header>

注意:这样标题会随着整个 ListView 滚动。

选项 2

如果你想在 screen 中修复 Name ,你可以在 ListView 的顶部定义另一个 Grid

<Grid>
       <Grid.RowDefinitions>
               <RowDefinition Height="Auto" />
       </Grid.RowDefinitions>
                                  

       <Grid.ColumnDefinitions>
            <ColumnDefinition Width="30*" />
            <ColumnDefinition Width="30*" />
            <ColumnDefinition Width="30*" />
       </Grid.ColumnDefinitions>

       <Label Grid.Column="0" Text="xxx"/>
       <Label Grid.Column="1" Text="xxx"/>
       <Label Grid.Column="2" Text="xxx"/>
                        
   </Grid>
   <ListView>
     //...
   </ListView>

【讨论】:

以上是关于有没有办法在 Xamarin C# 中的 ListView 的列上方创建列名的主要内容,如果未能解决你的问题,请参考以下文章

在 Typescript 中,有没有办法将一个类写成一个数组,所以我可以做 class[i],就像 C# 中的 List<T>

如何在 IDE 中获取 Xamarin Studio C# 输出?

有没有办法使用 Xamarin.Forms PCL 项目中的 Devexpress.Xamarin.Android.Charts

有没有办法通过读取 csv 文件来填充 Xamarin.Forms 中的 ObservableCollection?

是否可以在 Mac 上将 Xamarin 输出通过管道传输到 less 中?

Xamarin 中的 PhoneInfo java 类