我试图恢复我点击的menuitem的名称,我总是返回一个空字符串:
private void MenuP_Click(object sender, RoutedEventArgs e)
{
MenuItem menu4 = e.OriginalSource as MenuItem;
string ss = menu4.Name; /// always empty. why?
}
XAML:
Window.Resources>
<Style x:Key="ItemStyle" TargetType="MenuItem">
<EventSetter Event="MenuItem.Click" Handler="MenuP_Click"></EventSetter>
</Style>
<Style x:Key="CatStyle">
<Setter Property="MenuItem.ItemsSource" Value="{Binding XPath=submenu}"/>
<Setter Property="MenuItem.DisplayMemberPath" Value="@es"></Setter>
<Setter Property="MenuItem.ItemContainerStyle" Value="{StaticResource ItemStyle}"></Setter>
</Style>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/> <ColumnDefinition Width="677*"/>
</Grid.ColumnDefinitions>
<Menu Name="MenuP" VerticalAlignment="Top" ItemsSource="{Binding Source={StaticResource datos}, XPath=//menues/Menux}" DisplayMemberPath="@es" ItemContainerStyle="{StaticResource CatStyle}">
</Grid>
menuitems.count也始终为0。 我怎么知道用户点击了menuItem?
提前感谢您的帮助。
答案 0 :(得分:0)
尝试从MenuItem
参数中点击sender
,然后执行以下类型转换:
MenuItem menu4 = (MenuItem)sender;
string ss = menu4.Name;
如果你施放错误的对象而不是像对方null
那样返回... As MenuItem
,这种投射方式会抛出异常。如果你有错误的类型转换问题,那将会很清楚。
更新:
我认为你在ss
中有空字符串,因为你从未设置Name
的{{1}}属性,至少我在发布的代码中看不到。如果您想在MenuItem
中显示字符串,可以尝试这种方式:
MenuItem