Fluent.Ribbon
图书馆。
但我不知道如何通过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>
我的按钮的当前状态是:
<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问题。但我的命令不会被召唤。我知道我最终必须传递一个参数来区分不同的项,但我甚至不能让它运行普通命令。