(我的英语废话,我希望它没关系)
我有类似于组合框的东西,但它是一个" menuItem组合框"。 我试图创建一个动态菜单项,显示"历史"动态的对象。
我的代码存在问题,我无法获取我点击的项目的名称..
这是我的wpf,你可以看到Click =" myList_Click&#34 ;;它是触发器:
<Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
<MenuItem Header="Menu" x:Name="myList" Click="myList_Click">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="MenuItem.Header" Value="{Binding name}"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</Menu>
以下是MainWindow.cs的一部分:
public MainWindow()
{
var list = new List<History>
{
new History() { name = "Guy1"},
new History() { name = "Guy2"},
new History() { name = "Guy3"},
new History() { name = "Guy4"},
};
InitializeComponent();
this.myList.ItemsSource = list;
}
private void myList_Click(object sender, RoutedEventArgs e)
{
DependencyObject obj = (DependencyObject)e.OriginalSource;
while (obj != null && obj != myList)
{
if (obj.GetType() == typeof(MenuItem))
{
MessageBox.Show(myList.SelectedItem.ToString());
break;
}
obj = VisualTreeHelper.GetParent(obj);
}
}
最后,我的简单课程&#34;历史&#34;
public class History
{
// "prop" puis "tab"
public String name { get; set; }
public String path { get; set; }
public int time { get; set; }
public override string ToString()
{
return name;
}
}
我想到了SelectedItem,但它不起作用,我的MenuItem类并不存在SelectedItem。我为我的MenuItem尝试了一些方法,但没有给我任何有用的东西。
我想点击一个menuitem,然后显示它的名字。 (例如:当我点击guy1时,会出现一个弹出窗口并显示&#34; Guy1&#34;)。
我需要这个String来稍后操作我的软件。
非常感谢你的帮助。
答案 0 :(得分:1)
试试这个:
private void myList_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show((e.OriginalSource as MenuItem).Header.ToString());
}