在 NavigationView UWP 中处理来自 PaneFooter 项目的点击
Handling Clicks From PaneFooter Items in NavigationView UWP
我目前正在开发一个 UWP 应用程序,我有这个 <NavigationView>
可以处理 <NavigationView.MenuItems>
中的 <NavigationViewItem>
次点击。 <NavigationView.PaneFooter>
.
中的 <NavigationViewItem>
次点击似乎无法识别
这是XAML代码
<NavigationView x:Name="ControlNavigationView" Margin="0,0,0,0" IsSettingsVisible="False" Header="Welcome" SelectionChanged="NavigationView_SelectionChanged">
<NavigationView.MenuItems>
<NavigationViewItem Icon="OtherUser" Content="Positions" Tag="Positions"/>
<NavigationViewItem Icon="People" Content="Workers" Tag="Workers"/>
<NavigationViewItem Icon="Phone" Content="Customers" Tag="Customers"/>
<NavigationViewItem Icon="Manage" Content="Materials" Tag="Materials"/>
<NavigationViewItem Content="Flies" Tag="Flies">
<NavigationViewItem.Icon>
<FontIcon Glyph=""/>
</NavigationViewItem.Icon>
</NavigationViewItem>
<NavigationViewItem Icon="Shop" Content="Orders" Tag="Orders"/>
<NavigationViewItem Icon="Library" Content="Job Cards" Tag="Job Cards"/>
</NavigationView.MenuItems>
<NavigationView.PaneFooter>
<NavigationViewItem Icon="Contact" Content="User" Tag="User"/>
</NavigationView.PaneFooter>
<Frame x:Name="ContentFrame">
<Frame.ContentTransitions>
<TransitionCollection>
<NavigationThemeTransition/>
</TransitionCollection>
</Frame.ContentTransitions>
</Frame>
</NavigationView>
C# 代码
private void NavigationView_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
{
switch (((NavigationViewItem)args.SelectedItem).Tag.ToString())
{
case "Positions":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Workers":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Customers":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Materials":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Flies":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Orders":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Job Cards":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "User":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
}
}
如何处理
上的点击事件
<NavigationView.PaneFooter>
<NavigationViewItem Icon="Contact" Content="User" Tag="User"/>
</NavigationView.PaneFooter>
这是设计使然。 SelectionChanged
事件只有在菜单中当前选中的项目发生变化时才会被触发。
在您的情况下,您可以像下面这样为此 NavigationViewItem 注册 Tap
事件:
<NavigationView.PaneFooter>
<NavigationViewItem Icon="Contact" Content="User" Tag="User" Tapped="NavigationViewItem_Tapped"/>
</NavigationView.PaneFooter>
private void NavigationViewItem_Tapped(object sender, TappedRoutedEventArgs e)
{
NavigationViewItem navigationViewItem = sender as NavigationViewItem;
ContentFrame.Navigate(typeof(UnderConstructionPage), navigationViewItem.Tag);
ControlNavigationView.Header = navigationViewItem.Tag;
}
我目前正在开发一个 UWP 应用程序,我有这个 <NavigationView>
可以处理 <NavigationView.MenuItems>
中的 <NavigationViewItem>
次点击。 <NavigationView.PaneFooter>
.
<NavigationViewItem>
次点击似乎无法识别
这是XAML代码
<NavigationView x:Name="ControlNavigationView" Margin="0,0,0,0" IsSettingsVisible="False" Header="Welcome" SelectionChanged="NavigationView_SelectionChanged">
<NavigationView.MenuItems>
<NavigationViewItem Icon="OtherUser" Content="Positions" Tag="Positions"/>
<NavigationViewItem Icon="People" Content="Workers" Tag="Workers"/>
<NavigationViewItem Icon="Phone" Content="Customers" Tag="Customers"/>
<NavigationViewItem Icon="Manage" Content="Materials" Tag="Materials"/>
<NavigationViewItem Content="Flies" Tag="Flies">
<NavigationViewItem.Icon>
<FontIcon Glyph=""/>
</NavigationViewItem.Icon>
</NavigationViewItem>
<NavigationViewItem Icon="Shop" Content="Orders" Tag="Orders"/>
<NavigationViewItem Icon="Library" Content="Job Cards" Tag="Job Cards"/>
</NavigationView.MenuItems>
<NavigationView.PaneFooter>
<NavigationViewItem Icon="Contact" Content="User" Tag="User"/>
</NavigationView.PaneFooter>
<Frame x:Name="ContentFrame">
<Frame.ContentTransitions>
<TransitionCollection>
<NavigationThemeTransition/>
</TransitionCollection>
</Frame.ContentTransitions>
</Frame>
</NavigationView>
C# 代码
private void NavigationView_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
{
switch (((NavigationViewItem)args.SelectedItem).Tag.ToString())
{
case "Positions":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Workers":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Customers":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Materials":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Flies":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Orders":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "Job Cards":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
case "User":
ContentFrame.Navigate(typeof(UnderConstructionPage), ((NavigationViewItem)args.SelectedItem).Tag.ToString());
ControlNavigationView.Header = ((NavigationViewItem)args.SelectedItem).Tag.ToString();
break;
}
}
如何处理
上的点击事件<NavigationView.PaneFooter>
<NavigationViewItem Icon="Contact" Content="User" Tag="User"/>
</NavigationView.PaneFooter>
这是设计使然。 SelectionChanged
事件只有在菜单中当前选中的项目发生变化时才会被触发。
在您的情况下,您可以像下面这样为此 NavigationViewItem 注册 Tap
事件:
<NavigationView.PaneFooter>
<NavigationViewItem Icon="Contact" Content="User" Tag="User" Tapped="NavigationViewItem_Tapped"/>
</NavigationView.PaneFooter>
private void NavigationViewItem_Tapped(object sender, TappedRoutedEventArgs e)
{
NavigationViewItem navigationViewItem = sender as NavigationViewItem;
ContentFrame.Navigate(typeof(UnderConstructionPage), navigationViewItem.Tag);
ControlNavigationView.Header = navigationViewItem.Tag;
}