C# windows 8 phone中的多列列表

C# windows 8 phone中的多列列表,c#,windows-phone-8,C#,Windows Phone 8,我正在尝试创建一个应用程序,以便在windows 8手机中显示表格列表(ID、名称、Lname)。 我的XAML文件如下所示 <Grid.ColumnDefinitions> <ColumnDefinition Width="1*" /> <ColumnDefinition Width="1*" /> <ColumnDefinit

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

            <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>

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

您已定义了三列,但
堆栈面板
位于第一列(默认行为),因此我猜您无法查看数据

            <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>
或者,您可以将标题
TextBlocks
指定给网格(删除stackpanel),并在itemtemplate中定义另一个具有类似宽度的网格,这将有助于您实现布局

            <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>
<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"/>

然后你的模板像

            <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>
<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>


(未测试的代码只是按照您的帖子重新排列)希望这有助于在
堆栈面板内创建
网格
。在该对话框中创建一个

            <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>
这里看起来像:

            <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>
<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>


您是否需要此
ItemsSource=“{Binding}”
在标记中,您将以代码behindI am new分配给此Windows 8 phone应用程序开发。在上一次尝试中,我已将列表集合名称包含在此{Binding}属性中。现在我已经删除了这个。如果您觉得更改此选项有助于回答我的问题,请继续。您可以尝试删除列定义吗?您实际上只使用了第一个,其他列正在占用空间。谢谢您的即时回复。我按照你的建议做了尝试,但仍然没有在列表中显示任何值。它只显示标题信息。好的,只需添加两行定义,标题将是Row=0和
ListBox
Row=1和ColSpan=3