具有Fluent.Ribbon的MRU菜单-无法将命令连接到ModelView

时间:2018-07-11 07:54:39

标签: wpf mvvm data-binding icommand fluent.ribbon

我是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问题改编了这段代码。但是我的命令没有被调用。我知道我最终将必须传递一个参数来区分不同的项目,但是我什至无法获取它来运行普通命令。

0 个答案:

没有答案