【发布时间】:2015-03-24 19:54:43
【问题描述】:
我使用 ListBox 作为“导航”栏。当用户选择一个项目(例如:选项)时,将更改框架的来源。但是,我需要选择第一个项目,以便它看起来像该页面处于活动状态。
我将此添加到我的 ListBoxItem 样式中:
<Setter Property="SelectedIndex" Value="0"></Setter>
唯一的问题是,我得到一个空异常错误:
在定义 PageContainer (Frame) 之后,如何“选择”ListBox 中的项目?我对 WPF 很陌生,但我仍然不明白为什么在触发 selectedIndex 事件之前没有定义 Frame。
为了澄清,PageNavigation 是 ListBox,PageContainer 是框架。
附注
我应该:
甚至将 ListBox 用于多页软件(即: CCleaner)
使用框架和页面。 (我见过另一种使用自定义的方式 用户控制,但我觉得这有点奇怪)
XAML
<Style x:Key="PageNavigation" TargetType="{x:Type ListBox}">
<!--<Setter Property="SelectedIndex" Value="1"></Setter>-->
<Setter Property="Background" Value="#eee"></Setter>
<Setter Property="BorderThickness" Value="0"></Setter>
<Setter Property="Margin" Value="0"></Setter>
<Setter Property="FontSize" Value="18"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<Border Name="Border" BorderThickness="0, 0, 1, 0" BorderBrush="Gray" Background="#eee">
<ScrollViewer Focusable="false">
<StackPanel IsItemsHost="True"></StackPanel>
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
主窗口内:
<ListBox Name="PageNavigation" Style="{StaticResource PageNavigation}" ItemContainerStyle="{StaticResource PageNavigationItem}" SelectionChanged="PageNavigation_SelectionChanged">
<ListBoxItem Tag="Home.xaml">Home</ListBoxItem>
<ListBoxItem Tag="TestPage.xaml">Test Page</ListBoxItem>
<ListBoxItem Tag="OptionsPage.xaml">Options</ListBoxItem>
</ListBox>
【问题讨论】:
-
@Ganesh 我添加了 XAML。如果有任何问题,或者您需要更多信息,请告诉我。
-
您是否在 XAML 中先放置 ListBox,然后再放置 Frame?
-
@EliteGamer 只是对赏金的友好 ping ;)
-
@NETscape 没问题。一旦它告诉我我必须等待 6 小时,我就忘记了。哈哈。