我正在尝试创建一个模板,该模板将为InputGestureText分配最多MenuItem的ItemSource的前10个项目的静态值,或者从事件触发后的代码中进行此操作,但是我没有运气试图获取实际的MenuItem对象。
我一直在测试从MenuItem触发的不同事件,但是每次尝试遍历MenuItem的Items属性时,我都在获取字符串对象,而不是要按顺序为其分配值的MenuItem对象。其InputGestureText。
这是上下文菜单的XAML:
<MenuItem x:Name="ClassNameContext_1"
Header="Suggested Names"
ItemsSource="{Binding Path=DataContext.ClassNameList, Source={x:Reference ImgView}}"
Click="ClassNameContext_Click"
MouseEnter="ClassNameContext_MouseEnter"
SubmenuOpened="ClassNameContext_1_SubmenuOpened"/>
我尝试的源代码:
private void ClassNameContext_1_SubmenuOpened(object sender, RoutedEventArgs e)
{
MenuItem suggestedNames = e.OriginalSource as MenuItem;
if (suggestedNames == null)
return;
suggestedNames.InputGestureText = "TEST";
int index = 0;
foreach (var item in suggestedNames.ItemContainerGenerator.Items)
{
MenuItem blah = item as MenuItem;
var bloo = item.GetType();
var bruh = suggestedNames.ItemContainerGenerator.ContainerFromIndex(index);
}
}
从F1到F10,基本上直到前10个项都被分配了InputGestureTexts。
编辑
之所以不与指定的帖子重复,是因为那里的用户正在使用静态创建的MenuItem,而这里是从ItemSource加载的,ItemSource可以动态更改给定的事件,该事件在集合中添加或删除。 / p>