2015-04-13 52 views
0

好吧,所以我想让这个应用程序在我想要不同的东西显示在不同的标签上。ListView不会显示在TabItem中

我创建了一个选项卡控件,并且我有“地图视图”和“文本视图”。我还没有开始在地图视图,所以它目前是空的。 “文本视图”应该有一个ListView和一个WebBrowser。

在使用标签之前,我已经在应用程序中使用了这些项目,并且它们显示出来并且工作得很好。但是现在我试图将它们放在TabItem中,不管我做什么,ListView都不会显示出来。

WebBrowser显示正常,但ListView尽管多次尝试将它带到前面,但不会显示出来。它不会显示在设计屏幕中,也不会在程序运行时显示。我可以选择它,如果我将XAML复制粘贴到页面的另一部分(不再位于TabControl内部),它将再次完美可见。我不知道为什么会这样,一直试图弄清楚一个多小时。

<Grid HorizontalAlignment="Left" Height="506" Margin="278,46,0,0"  VerticalAlignment="Top" Width="753" x:Name="TextMapGrid" Background="#FFEEE1E1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 
     <TabControl HorizontalAlignment="Left" Height="21" Margin="-1,-21,0,0" VerticalAlignment="Top" Width="136"> 
      <TabItem Header="Text View"> 
       <Grid Background="#FFE5E5E5"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition/> 
        </Grid.ColumnDefinitions> 
        <WebBrowser x:Name="RSSWeb" HorizontalAlignment="Left" Height="363" VerticalAlignment="Top" Width="746" Margin="0,135,-620,-498" Grid.ColumnSpan="2"/> 
        <ListView x:Name="RSSList" HorizontalAlignment="Left" Height="121" VerticalAlignment="Top" Width="746" MouseLeftButtonUp="RSSList_MouseLeftButtonUp" Margin="0,-1,-620,-120" Background="White" Grid.ColumnSpan="2"> 
         <ListView.View> 
          <GridView> 
           <GridViewColumn Header="Read" Width="50" DisplayMemberBinding="{Binding Read}"/> 
           <GridViewColumn Header="Title" Width="300" DisplayMemberBinding="{Binding Title}"/> 
           <GridViewColumn Header="Date" Width="110" DisplayMemberBinding="{Binding Date}"/> 
           <GridViewColumn Header="Link" Width="343" DisplayMemberBinding="{Binding URL}"/> 
          </GridView> 
         </ListView.View> 
        </ListView> 

       </Grid> 
      </TabItem> 
      <TabItem Header="Map View" Margin="-2,-2,-2,-1"> 
       <Grid Background="#FFE5E5E5"> 

       </Grid> 
      </TabItem> 
     </TabControl> 

    </Grid> 

回答

2

您正在将您的listview和web浏览器放在一个单元格网格中。 此外,删除您的列表视图和浏览器上的Margin和Grid.Columnspan属性。

您可以将它们包装在StackPanel中,例如

<StackPanel> 
    <ListView x:Name="RSSList" HorizontalAlignment="Left" Height="121" VerticalAlignment="Top" Width="746" MouseLeftButtonUp="RSSList_MouseLeftButtonUp" Margin="0,-1,-620,-120" Background="White" Grid.ColumnSpan="2"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Read" Width="50" DisplayMemberBinding="{Binding Read}"/> 
       <GridViewColumn Header="Title" Width="300" DisplayMemberBinding="{Binding Title}"/> 
       <GridViewColumn Header="Date" Width="110" DisplayMemberBinding="{Binding Date}"/> 
       <GridViewColumn Header="Link" Width="343" DisplayMemberBinding="{Binding URL}"/> 
      </GridView> 
     </ListView.View> 
    </ListView> 
    <WebBrowser x:Name="RSSWeb" HorizontalAlignment="Left" Height="363" VerticalAlignment="Top" Width="746" Margin="0,135,-620,-498" Grid.ColumnSpan="2"/> 
</StackPanel> 

或将行定义添加到您的网格并将它们分配到它们自己的行。

<Grid Background="#FFE5E5E5"> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <WebBrowser Grid.Row="1" ... Rest of code omitted for brevity /> 
    <ListView Grid.Row="0" ...Rest of code omitted for brevity /> 
</Grid> 

编辑:简单的例子说明这个概念的工作原理。 您可以创建一个新窗口/ usercontrol并尝试下面的代码示例。

<Grid> 
    <TabControl> 
     <TabItem Header="Stack Panel example"> 
      <StackPanel> 
       <TextBlock Text="ListView" /> 
       <ListView Height="100" Margin="2"/> 
       <TextBlock Text="Web Browser" /> 
       <WebBrowser Height="100" Margin="2" /> 
      </StackPanel> 
     </TabItem> 
     <TabItem Header="Grid example"> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 
       <ListView Grid.Row="0" Height="100" Margin="2"/> 
       <WebBrowser Grid.Row="1" Height="100" Margin="2"/> 
      </Grid> 
     </TabItem> 
    </TabControl> 
</Grid> 
+0

这些都没有工作。让WebBrowser在ListView下面也不起作用。另外,将ListView自己放在第二个选项卡项目(Header =“Map View”之一)上仍然没有显示ListView。所以自己在自己的网格上仍然没有显示出来。 –

+0

您是否删除了ListView和WebBrowser上的Margin属性? – failedprogramming

+0

作为参考,这是整个应用程序的图片。右上角的空灰色区域是ListView应该显示的位置。它下面的白色框是仍然显示的WebBrowser。 http://i.imgur.com/CDDegas.jpg –