ListView 在 TabItem 中不会显示
ListView won't show up while in TabItem
好的,所以我正在尝试制作此应用程序,我希望在不同的选项卡上显示不同的内容。
我创建了一个选项卡控件,我有 "Map View" 和 "Text View"。我还没有开始使用地图视图,所以它目前是空的。 "Text View" 应该有一个 ListView 和一个 WebBrowser。
我在使用选项卡之前在应用程序中有这些项目,它们显示出来并且工作得很好。但是现在我试图将它们放在 TabItem 中,无论我做什么,ListView 都不会显示。
WebBrowser 显示正常,但 ListView 尽管多次尝试将其置于最前面,但仍未显示。它不会出现在设计屏幕中,也不会在程序为 运行 时显示。我可以 select 它,如果我将 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>
您将列表视图和网络浏览器都放在一个单元格网格中。
此外,删除列表视图和网络浏览器上的边距和 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>
编辑:证明该概念有效的简单示例。
您可以创建一个新的 window/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>
好的,所以我正在尝试制作此应用程序,我希望在不同的选项卡上显示不同的内容。
我创建了一个选项卡控件,我有 "Map View" 和 "Text View"。我还没有开始使用地图视图,所以它目前是空的。 "Text View" 应该有一个 ListView 和一个 WebBrowser。
我在使用选项卡之前在应用程序中有这些项目,它们显示出来并且工作得很好。但是现在我试图将它们放在 TabItem 中,无论我做什么,ListView 都不会显示。
WebBrowser 显示正常,但 ListView 尽管多次尝试将其置于最前面,但仍未显示。它不会出现在设计屏幕中,也不会在程序为 运行 时显示。我可以 select 它,如果我将 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>
您将列表视图和网络浏览器都放在一个单元格网格中。 此外,删除列表视图和网络浏览器上的边距和 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>
编辑:证明该概念有效的简单示例。 您可以创建一个新的 window/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>