gpt4 book ai didi

c# - 如果源绑定(bind)适用,如何访问快速访问工具栏命令 `Add to Quick Access Tool`

转载 作者:可可西里 更新时间:2023-11-01 08:47:12 27 4
gpt4 key购买 nike

如果我已经为它绑定(bind)了集合,我该如何添加 RibbonLibrary 默认的快速访问项容器。当我从 UI 添加快速访问工具项时,它会抛出 Operation is not valid while ItemSource is in use in use

<r:Ribbon Name="ribbon">

<r:Ribbon.QuickAccessToolBar>

<r:RibbonQuickAccessToolBar ItemsSource ="{Binding QuickMenuItems, Mode=OneWay}">
<r:RibbonQuickAccessToolBar.ItemTemplate>
<DataTemplate>
<StackPanel>
<r:RibbonButton QuickAccessToolBarId="{Binding RibbonId}" Label="{Binding Label}" SmallImageSource="{Binding ImageUri}" Command="{Binding Command}"/>
</StackPanel>
</DataTemplate>
</r:RibbonQuickAccessToolBar.ItemTemplate>
</r:RibbonQuickAccessToolBar>

</r:Ribbon.QuickAccessToolBar>

<r:RibbonTab Header="Home">
<r:RibbonGroup x:Name="Clipboard" ItemsSource ="{Binding MenuItems, Mode=OneWay}" >

<r:RibbonGroup.ItemTemplate>
<DataTemplate>
<StackPanel>
<r:RibbonButton QuickAccessToolBarId="{Binding RibbonId}" Label="{Binding Label}" SmallImageSource="{Binding ImageUri}" Command="{Binding Command}"/>
</StackPanel>
</DataTemplate>
</r:RibbonGroup.ItemTemplate>

</r:RibbonGroup>
</r:RibbonTab>

</r:Ribbon>


ObservableCollection<RibbonItem> _MenuItems;
ObservableCollection<RibbonItem> _QuickMenuItems;

public ObservableCollection<RibbonItem> MenuItems
{
get { return _MenuItems; }
}
public ObservableCollection<RibbonItem> QuickMenuItems
{
get { return _QuickMenuItems; }
}
public class RibbonItem
{
public RibbonItem(string label, string imageUri, ICommand command, string ribbonId)
{
Label = label;
ImageUri = imageUri;
Command = command;
}

public string Label { get; private set; }

public string ImageUri { get; private set; }

public ICommand Command { get; private set; }

public string RibbonId { get; private set; }
}

错误而

enter image description here

enter image description here
如果不清楚,请添加评论。

最佳答案

问题是 ContextMenu 正在尝试使用 ItemCollection.Add() 将项目添加到集合中,但是如果 ItemsSource 被用来填充集合而不支持此方法,并且该方法将抛出异常。

查看源代码:ItemCollection.cs

一种解决方案是隐藏 ContextMenu 以避免调用其不受支持的功能,或者尝试将其替换为您自己的自定义 ContextMenu,它绑定(bind)到 ViewModel 上的命令并更新 QuickMenuItems。

可能存在某种使用附加属性的黑客行为。

关于c# - 如果源绑定(bind)适用,如何访问快速访问工具栏命令 `Add to Quick Access Tool`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31564211/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com