0
我正在使用RibbonSplitButton在其下拉菜單項中模仿Visual Studio的撤消重做按鈕。 我們有撤消重做堆棧,我有一個依賴性屬性更改事件處理程序,將更新基於堆棧的用戶界面。問題是,splitbutton的items屬性正在使用一個Collection,即使它的項目集合是按正確的順序排列的,它們也不會顯示它們,因爲它們是按索引排序的。WPF RibbonControlsLibrary RibbonSplitButton項目問題
我將在下面提供一些例子來解釋這更好:
代碼:
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>
P.S.即使我將插入從零更改爲添加,所以它將添加到集合的最後一個,而不是第一個,它似乎沒有區別... 如果任何人都可以給我一些關於正在發生的事情的信息以及如何解決這個問題,將不勝感激。 在此先感謝。
我仍然無法弄清楚什麼是錯在這裏,但我創造了自己的歷史窗口撤銷/重做堆棧,所以我現在沒事了..謝謝.. – 2011-05-10 18:18:41