我是WPF的新手,正在尝试使用Fluent.Ribbon库构建MRU(最近使用过的项目)菜单。
一些示例代码的挖掘和互联网使我想到了这一点,我可以根据列表或最近使用的项目在splitbutton中生成菜单项。 但是我不知道如何通过OpenCommand将这些项目连接起来
class MainWindowVM : NotifyingObject
{
private ICommand openCommand;
private ObservableCollection<String> recentFileNames = new ObservableCollection<string>() { "Bellerophon", "Athena" };
public ICommand OpenCommand
{
get => openCommand;
}
public ObservableCollection<String> RecentFileNames
{
get => recentFileNames;
}
}
Viewmodel应用于RibbonWindow
<Window.DataContext>
<vm:MainWindowVM />
</Window.DataContext>
我的Button的当前状态是:
<Fluent:SplitButton Header="Open..." Size="Middle"
Command="{Binding OpenCommand}"
ItemsSource="{Binding Path=RecentFileNames}">
<Fluent:SplitButton.Icon>
<Image Source="Icons/folder-open-document.png" />
</Fluent:SplitButton.Icon>
<Fluent:SplitButton.LargeIcon>
<Image Source="Icons/folder-open-document.png" />
</Fluent:SplitButton.LargeIcon>
<Fluent:SplitButton.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</Fluent:SplitButton.ItemTemplate>
<Fluent:SplitButton.ItemContainerStyle>
<Style TargetType="{x:Type Fluent:MenuItem}">
<Setter Property="Command"
Value="{Binding DataContext.OpenCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Fluent:MenuItem}, AncestorLevel=1}}" />
<!--Setter Property="CommandParameter" Value="{}" /-->
</Style>
</Fluent:SplitButton.ItemContainerStyle>
</Fluent:SplitButton>
我已经从正常菜单项上运行的另一个SO问题改编了这段代码。但是我的命令没有被调用。我知道我最终将必须传递一个参数来区分不同的项目,但是我什至无法获取它来运行普通命令。