2015-04-13 58 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 –