代码之家  ›  专栏  ›  技术社区  ›  Kempeth

MRU菜单流利。丝带-无法将命令关联到ModelView

  •  0
  • Kempeth  · 技术社区  · 8 年前

    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问题。但我的命令不会被召唤。我知道我最终必须传递一个参数来区分不同的项,但我甚至不能让它运行普通命令。

    0 回复  |  直到 8 年前