4
我想知道什麼是最好的方式來處理30左右MenuItems點擊事件?處理MenuItem Click事件的最佳方法是什麼?
我首先想到的是明明只創建一個事件偵聽器爲每個菜單項,像這樣:
XAML:
<Menu Name="MainMenu" IsMainMenu="True" Height="25">
<MenuItem Header="_File" >
<MenuItem Name="New" Header="_New" Click="MenuItem_NewClick" />
<MenuItem Name="Open" Header="_Open" Click="MenuItem_OpenClick" />
<MenuItem Name="Save" Header="_Save" Click="MenuItem_SaveClick" />
</MenuItem>
</Menu>
C#1:
private void MenuItem_NewClick(object sender, RoutedEventArgs e)
{
//Do work...
}
private void MenuItem_OpenClick(object sender, RoutedEventArgs e)
{
//Do work...
}
private void MenuItem_SaveClick(object sender, RoutedEventArgs e)
{
//Do work...
}
但這似乎凌亂,尤其是對於不需要複製或粘貼等許多代碼的MenuItems。
我可以改用一個事件偵聽器,並使用IF /機箱檢查菜單項和消除一切多餘的事件監聽器,像這樣:
C#2:
private void MenuItem_FileClick(object sender, RoutedEventArgs e)
{
MenuItem item = e.OriginalSource as MenuItem;
switch (item.Name)
{
case "New":
MessageBox.Show("New File Created.");
break;
case "Open":
MessageBox.Show("File Opened Created.");
break;
case "Save":
MessageBox.Show("File Saved.");
break;
}
}
這似乎多少更清潔,但同時也很麻煩,如果MenuItems需要做更多的工作,而不是打開另一個窗體或清除一些控件。如果需要複雜的邏輯,我可以調用一個函數,但我認爲這會導致意大利麪代碼?
什麼是最優雅的方式來處理?
感謝, 坦納
有趣!你能解釋爲什麼這是一種比僅僅使用病例陳述更好的方法嗎?這看起來很相似。 –