我正在学习WPF,我发现Modern-UI真的很棒,可以构建WPF应用程序。但是,我找不到使用Modern-UI绑定菜单链接内容( DisplayName 属性)的方法。目前,我只能在代码后面更改DisplayName属性。任何帮助表示赞赏!谢谢!
<Grid Style="{StaticResource ContentRoot}">
<mui:ModernTab x:Name="ModernTab" Layout="List" SelectedSource="/Pages/Messages/Inbox.xaml">
<mui:ModernTab.Links>
<mui:Link x:Name="NewMessage" DisplayName="New Message" Source="/Pages/Messages/NewMessage.xaml" />
<mui:Link x:Name="InboxLink" DisplayName="Inbox" Source="/Pages/Messages/Inbox.xaml" />
<mui:Link x:Name="SentLink" DisplayName="Sent" Source="/Pages/Messages/Sent.xaml" />
<mui:Link x:Name="SystemMessagesLink" DisplayName="System Messages" Source="/Pages/Messages/SystemMessages.xaml" />
<mui:Link x:Name="AccountSettingsLink" DisplayName="Account Settings" Source="/Pages/Admin/UserAccount.xaml" />
</mui:ModernTab.Links>
</mui:ModernTab>
答案 0 :(得分:0)
您需要将ModernTab.Links绑定到viewmodel中的链接集合中。
如果您不使用MVVM,则需要创建包含链接和更改后的显示名称的链接集合,并将此链接集合分配给ModernTab.Links。
答案 1 :(得分:0)
从坟墓中崛起.....
我刚遇到这个问题,实际上还不错。标题链接(如框架顶部的设置之类的小链接)和实际菜单都是依赖项属性,可以绑定到您的Viewmodel中。
这是我声明我的方式-
private LinkGroupCollection _menuLinkGroups = new LinkGroupCollection();
public LinkGroupCollection MenuLinkGroups
{
get => _menuLinkGroups;
set => SetProperty(ref _menuLinkGroups, value);
}
private LinkCollection _titleLinks = new LinkCollection();
public LinkCollection TitleLinks
{
get => _titleLinks;
set => SetProperty(ref _titleLinks, value);
}
然后我可以像这样填充它们-
private void ConstructLinks()
{
if (MenuLinkGroups.Any())
{
MenuLinkGroups.Clear();
TitleLinks.Clear();
}
var group = new LinkGroup {DisplayName = "Home"};
var link = new Link { DisplayName = "Home", Source = MenuLinks.Home };
group.Links.Add(link);
MenuLinkGroups.Add(group);
group = new LinkGroup{DisplayName = "Menu 1"};
link = new Link {DisplayName = "Menu Item 1", Source = MenuLinks.Item1};
group.Links.Add(link);
link = new Link {DisplayName = "Menu Item 2", Source = MenuLinks.Item2};
group.Links.Add(link);
MenuLinkGroups.Add(group);
group = new LinkGroup { DisplayName = "Menu 2" };
link = new Link { DisplayName = "Menu Item3", Source = MenuLinks.Item3 };
group.Links.Add(link);
link = new Link {DisplayName = "Menu Item 4", Source = MenuLinks.Item4};
group.Links.Add(link);
MenuLinkGroups.Add(group);
// Settings
link = new Link { DisplayName = "Settings", Source = MenuLinks.Settings };
TitleLinks.Add(link);
}
MenuLinks类只是一个静态类,其中包含视图的各种URI。
最后将它们绑定到XAML中。
<mui:ModernWindow x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mui="http://firstfloorsoftware.com/ModernUI"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
Title="{Binding Title}" IsTitleVisible="True"
ContentSource="/Views/Introduction.xaml"
Width="800" Height="700" WindowState="Maximized" SizeToContent="Manual"
TitleLinks ="{Binding TitleLinks}"
MenuLinkGroups ="{Binding MenuLinkGroups}">
</mui:ModernWindow>
值得指出的是,ContentSource也是一个依赖项属性,因此您也可以绑定它。如果您喜欢一点贫民区导航,那就是。