在問這個問題之前,我花了很多時間瀏覽StackOverflow和Google,並且找不到任何非常有用的東西。我正在尋找關於如何從已編譯的Xaml文件加載菜單並將其附加到Menu控件的指南。我是WPF新手,請耐心等待。在WPF中,如何從資源加載菜單?
在我的網頁,我有下面的XAML代碼:
<Menu ItemsSource="{Binding MainMenu}">
</Menu>
我的視圖模型類目前看起來像這樣:
public class MainWindowViewModel : ViewModelBase
{
public ItemCollection MainMenu { get; set; }
public MainWindowViewModel()
{
Menu m = (Menu)Application.LoadComponent(new Uri("/Assets/Menus/StartupShellMenu.xaml", UriKind.Relative));
MainMenu = m.Items;
}
}
的StartupShellMenu.xaml文件看起來像這樣:
<Menu xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<MenuItem Header="_File">
<MenuItem Header="_Open">
<MenuItem.Icon>
<Image Height="16" Width="16" Source="/Assets/Icons/Open.png"/>
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="E_xit"/>
</MenuItem>
</Menu>
我所看到的是我的菜單項出現,但只要我的鼠標離開菜單(我不必點擊),菜單消失。另外,普通鍵盤功能不起作用;按Alt + F不顯示菜單,一旦顯示,上/下鍵不起作用。我已經嘗試將MainMenu屬性的類型更改爲ObservableCollection,但沒有更改。有什麼想法嗎?我確信我錯過了一些顯而易見的愚蠢,但是在搜索中我找不到任何有用的東西。
在此先感謝!
其實,我想我明白了。不過,謝謝大家的迴應。是的,我的計劃是有一組動態的菜單出現在上下文中,就像Visual Studio菜單的工作方式一樣。事實證明,你不能直接從一個菜單中將菜單項加載到另一個菜單項中,這實際上就是我正在做的。如果你仔細考慮它,這是有意義的,因爲所有權被稱爲質疑。我需要使用HierarchicalDataTemplate對象和ContentPresenter。 再次,謝謝。我會給你信貸的時間,你採取迴應。非常感謝。 – 2012-04-05 13:05:31