首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windows 8手机中的多列列表

windows 8手机中的多列列表
EN

Stack Overflow用户
提问于 2014-02-03 09:29:53
回答 2查看 843关注 0票数 0

我正在尝试创建一个应用程序,在windows 8手机中显示表格列表(ID、Name、Lname)。我的XAML文件如下

代码语言:javascript
复制
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="1*"  />
                <ColumnDefinition Width="1*"  />
                <ColumnDefinition Width="1*"  />
            </Grid.ColumnDefinitions>

            <Grid.Resources>
                <Style x:Key="ListBoxStyle" TargetType="ListBoxItem">
                    <Setter Property="Background" Value="{StaticResource PhoneSemitransparentBrush}" />
                    <Setter Property="Margin" Value="3,5" />
                    <Setter Property="FontSize" Value="20" />
                    <Setter Property="BorderBrush" Value="{StaticResource PhoneBorderBrush}" />
                    <!-- Replace the default item template with a basic template that does not highlight selected items. -->
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <ContentPresenter/>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
                <Style x:Key="SummaryStyle" TargetType="TextBlock">
                    <Setter Property="Margin" Value="5" />
                    <Setter Property="Width" Value="75" />
                    <Setter Property="HorizontalAlignment" Value="Left" />
                </Style>
            </Grid.Resources>


            <StackPanel Orientation="Horizontal">
                <TextBlock  Text="ID" Width="100" />
                <TextBlock  Text="Name" Width="150"/>
                <TextBlock  Text="LName"  Width="150"/>
            </StackPanel>

            <ScrollViewer Margin="-5,13,3,36" Height="558">
                <ListBox Name="lstBox" 
          ItemsSource="{Binding}" 
          Height="380" HorizontalAlignment="Left" Margin="5,25,0,0" 
          VerticalAlignment="Top" Width="444" >
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Text="{Binding ID}" />
                                <TextBlock Text="{Binding FName}" />
                                <TextBlock Text="{Binding LName}" />

                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

            </ScrollViewer>

        </Grid>

我在按钮上调用下面的代码

代码语言:javascript
复制
        List<Customers> cust = new List<Customers>();
        cust.Add(new Customers(1, "Ganesh", "S"));
        cust.Add(new Customers(2, "Shan", "S"));
        cust.Add(new Customers(3, "Anjan", "A"));
        lstBox.ItemsSource = cust;

但是,它不显示列表--它只是显示列。这些客户名称应显示在windows 8电话中。

ID名LName

代码语言:javascript
复制
1                  Ganesh                   S
2                  Shan                     S
3                  Anjan                    A

代码中缺少什么?或者,在windows 8电话中显示多列列表时,我应该遵循什么?

EN

回答 2

Stack Overflow用户

发布于 2014-02-03 10:37:23

您已经定义了三列,但是StackPanel放在第一列(默认行为)中,因此我猜您无法查看数据。

或者,您可能可以将标题TextBlocks分配给网格(移除堆栈面板),并在项目模板中定义另一个宽度类似的网格,这将帮助您完成布局。

代码语言:javascript
复制
<Grid.ColumnDefinitions>
  <ColumnDefinition Width="1*"  />
  <ColumnDefinition Width="1*"  />
  <ColumnDefinition Width="1*"  />
</Grid.ColumnDefinitions>

<TextBlock  Text="ID" Width="100" Grid.Column="0"/>
<TextBlock  Text="Name" Width="150" Grid.Column="1"/>
<TextBlock  Text="LName"  Width="150" Grid.Column="2"/>

然后你的模板就像

代码语言:javascript
复制
<ListBox.ItemTemplate>
<DataTemplate>
<Grid >
<Grid.ColumnDefinitions>
      <ColumnDefinition Width="1*"  />
      <ColumnDefinition Width="1*"  />
      <ColumnDefinition Width="1*"  />
</Grid.ColumnDefinitions>
     <TextBlock Text="{Binding ID}" Grid.Column="0"/>
     <TextBlock Text="{Binding FName}" Grid.Column="1"/>
     <TextBlock Text="{Binding LName}" Grid.Column="2"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>

(没有经过测试的代码只是按照你的帖子重新排列)希望这有帮助

票数 0
EN

Stack Overflow用户

发布于 2014-02-03 10:44:12

Grid中创建一个StackPanel。在其中创建一个column

这里看起来是:

代码语言:javascript
复制
<ScrollViewer Margin="-5,13,3,36" Height="558">
            <ListBox Name="lstBox" 
      ItemsSource="{Binding}" 
      Height="380" HorizontalAlignment="Left" Margin="5,25,0,0" 
      VerticalAlignment="Top" Width="444" >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                           <Grid>
                               <Grid.ColumnDefinitions>
                                  <ColumnDefinition Width="Specify width"  />
                                  <ColumnDefinition Width="Specify width"  />
                                  <ColumnDefinition Width="Specify width"  />
                               </Grid.ColumnDefinitions>

                               <TextBlock Text="{Binding ID}" Grid.Column="0" />
                               <TextBlock Text="{Binding FName}" Grid.Column="1" />
                               <TextBlock Text="{Binding LName}" Grid.Column="2" />
                           </Grid> 
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </ScrollViewer>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21523669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档