WPF RibbonControlsLibrary RibbonSplitButton项目发布

| 我正在使用RibbonSplitButton及其下拉菜单中的菜单项来模仿Visual Studio的撤消重做按钮。 我们有撤消重做堆栈,我有一个依赖项已更改属性的事件处理程序,它将根据堆栈更新UI。问题是,splitbutton的items属性使用的是Collection,即使其项目集合的顺序正确,它也不会按索引顺序显示它们。 我将在下面提供一些示例以更好地解释这一点: 码:
private static void UndoRedoUpdated(DependencyObject obj, DependencyPropertyChangedEventArgs args)
    {
        VO3Main main = (VO3Main)Application.Current.MainWindow;
        MenuItem item;
        int dif;

        if (main.UndoCommands != null)
        {
            dif = main.UndoCommands.Count - main._undoMenu.Items.Count;
            if (dif > 0)
            {
                for (int i = dif - 1; i >= 0; i--)
                {
                    item = new MenuItem();
                    item.Header = main.UndoCommands[i].Name;
                    item.Click += new RoutedEventHandler(main.undoMenu_Click);
                    main._undoMenu.Items.Insert(0, item);
                }
            }
            else if (dif < 0)
            {
                for (int i = 0; i < -dif; i++)
                    main._undoMenu.Items.RemoveAt(0);
            }
        }

        if (main.RedoCommands != null)
        {
            dif = main.RedoCommands.Count - main._redoMenu.Items.Count;

            if (dif > 0)
            {
                for (int i = dif - 1; i >= 0; i--)
                {
                    item = new MenuItem();
                    item.Header = main.RedoCommands[i].Name;
                    item.Click += new RoutedEventHandler(main.redoMenu_Click);
                    main._redoMenu.Items.Insert(0, item);
                }
            }
            else if (dif < 0)
            {
                for (int i = 0; i < -dif; i++)
                    main._redoMenu.Items.RemoveAt(0);
            }
        }
    }
XAML:
<r:RibbonGroup GroupSizeDefinitions=\"{StaticResource RibbonLayoutSmall}\">
       <r:RibbonGroup.Command>
              <r:RibbonCommand LabelTitle=\"Editing\"/>
       </r:RibbonGroup.Command>
       <r:RibbonSplitButton Name=\"_undoMenu\" Command=\"me:AppCommands.Undo\" MaxHeight=\"50\"/>
       <r:RibbonSplitButton Name=\"_redoMenu\" Command=\"me:AppCommands.Redo\" MaxHeight=\"50\"/>
</r:RibbonGroup>
附言即使我将0处的插入更改为Add,所以它将添加到集合的最后一个而不是第一个,这似乎没有什么不同... 如果有人可以给我一些有关正在进行的事情以及如何解决此问题的信息,将不胜感激。 提前致谢。     
已邀请:
我通常在RibbonSplitButton中使用绑定。所以没看到你的问题。您可以在RibbonSplitButton中尝试RibbonGallery,然后查看它是否有效。 或像这样使用绑定:
RSB.ItemsSource = new Collection<object> { new { Name = \"Paste\" }, new { Name = \"InsertGlyph\" } };

<rb:RibbonGroup Header=\"ABC\">
    <rb:RibbonSplitButton x:Name=\"RSB\">
        <rb:RibbonSplitButton.ItemTemplate>
            <DataTemplate>
                <TextBlock Text=\"{Binding Name}\" />
            </DataTemplate>
        </rb:RibbonSplitButton.ItemTemplate>
    </rb:RibbonSplitButton>
</rb:RibbonGroup>
    

要回复问题请先登录注册