动态创建Contextmenu(不在Xaml中)

时间:2016-03-07 10:38:44

标签: c# wpf xaml telerik radgridview

我有一个包含很多视图的应用程序,其中很多都是GridViews(实际上来自Telerik的RadGridViews)。我将为每个网格实现上下文菜单功能,以便用户可以复制行或复制特定单元格。目前我做的如下:

                <telerik:RadContextMenu.ContextMenu>
                    <telerik:RadContextMenu x:Name="radContextMenu">
                        <telerik:RadMenuItem Header="Copy...">
                            <telerik:RadMenuItem.Icon>
                                <TextBlock Text="&#xE653;" HorizontalAlignment="Center" />
                            </telerik:RadMenuItem.Icon>
                            <telerik:RadMenuItem Header="Selected Row(s)" Command="{Binding Commands.CopySelectedRowsCommand, Mode=TwoWay}">
                                <interactivity:Interaction.Behaviors>
                                    <localbehaviors:SetSelectedRowsToCommandParameterBehavior />
                                </interactivity:Interaction.Behaviors>
                            </telerik:RadMenuItem>
                            <telerik:RadMenuItem Header="Cell Text" 
                                                 Command="{Binding Commands.CopyCellTextCommand, Mode=TwoWay}">
                                <interactivity:Interaction.Behaviors>
                                    <localbehaviors:SetCellValueToCommandParameterBehavior/>
                                </interactivity:Interaction.Behaviors>
                            </telerik:RadMenuItem>
                        </telerik:RadMenuItem>
                        <telerik:RadMenuItem Header="Email" Command="{Binding Commands.EmailCommand, Mode=TwoWay}">
                            <telerik:RadMenuItem.Icon>
                                <TextBlock Text="&#xE603;" HorizontalAlignment="Center" />
                            </telerik:RadMenuItem.Icon>
                            <interactivity:Interaction.Behaviors>
                                <localbehaviors:SetSelectedRowsWithHeadersToCommandParameterBehavior />
                            </interactivity:Interaction.Behaviors>
                        </telerik:RadMenuItem>
                    </telerik:RadContextMenu>
                </telerik:RadContextMenu.ContextMenu>

但是因为这个应用程序有很多网格(大约75个不同的网格),我想把这个部分移到一个类中,让我们说RadGridViewCopyFunctionality,例如它将继承Telerik.Windows.Controls中的ControlPanelItem .GridView.ControlPanelItems,并实现了我的上下文菜单所需的功能。 Xaml代码将只是:

                <telerik:RadGridView.ControlPanelItems>
                    <frameworkControls:RadGridViewCopyFunctionality Icon="{x:Static commonIcons:NavigationIcon.Menu}" />
                </telerik:RadGridView.ControlPanelItems>

通过这样做,代码重复性更低,更易于维护。问题是我无法让这个工作。如果有人能指出我正确的方向,或者甚至告诉我是否还有其他方法可以在代码中实现这个功能。任何帮助表示赞赏。

谢谢, 彼得

0 个答案:

没有答案