1

我正在尝试在 WPF 应用程序中实现 Outlook 功能区,并且功能区工作正常。但是,当我尝试添加 RibbonGroup 时,我在 XAML 中得到一个未处理的异常。

这是我的代码:

<r:RibbonWindow 
    x:Class="WpfArticles.Main"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:r="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
    Title="Main" Height="500" Width="500">

    <StackPanel>
        <r:Ribbon Title="WPF Ribbon - Document1" x:Name="ribbon" >
            <r:RibbonTab Label="Home">
                <r:RibbonGroup Name="Test" />
            </r:RibbonTab>
            <r:RibbonTab Label="Insert"/>
            <r:RibbonTab Label="Help"/>
        </r:Ribbon >

我在 XAML 中收到此错误:

Object reference not set to an instance of an object. at
Microsoft.Windows.Controls.Ribbon.RibbonGroup.OnApplyTemplate() at
System.Windows.FrameworkElement.ApplyTemplate() at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.StackPanel.MeasureOverride(Size constraint) at
Microsoft.Windows.Controls.Ribbon.RibbonGroupsContainer.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint) at
System.Windows.Controls.ScrollContentPresenter.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV) at
System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV) at
System.Windows.Controls.Grid.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.ScrollViewer.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Grid.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Border.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint) at
System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Control.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV) at
System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV) at
System.Windows.Controls.Grid.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Control.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.StackPanel.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint) at
System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Decorator.MeasureOverride(Size constraint) at
System.Windows.Documents.AdornerDecorator.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV) at
System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV) at
System.Windows.Controls.Grid.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Border.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Border.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.DockPanel.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Border.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Grid.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Control.MeasureOverride(Size constraint) at
MS.Internal.WindowControl.DesignTimeWindow.MeasureOverride(Size availableSize) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
MS.Internal.Designer.SimpleViewManager.DesignerBackground.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Decorator.MeasureOverride(Size constraint) at
Microsoft.Windows.Design.Interaction.DesignerView.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
MS.Internal.Designer.Viewport.MeasureOverride(Size availableSize) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint) at
System.Windows.Controls.ScrollContentPresenter.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV) at
System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV) at
System.Windows.Controls.Grid.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.ScrollViewer.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Grid.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint) at
System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Controls.Control.MeasureOverride(Size constraint) at
System.Windows.FrameworkElement.MeasureCore(Size availableSize) at
System.Windows.UIElement.Measure(Size availableSize) at
System.Windows.Interop.HwndSource.SetLayoutSize() at
System.Windows.Interop.HwndSource.set_RootVisualInternal(Visual value) at
System.Windows.Interop.HwndSource.set_RootVisual(Visual value) at
MS.Internal.Designer.VSIsolatedDesigner.ViewHolder.Initialize() at
MS.Internal.Designer.VSIsolatedDesigner.ViewHolder..ctor(UIElement content) at
MS.Internal.Designer.VSIsolatedDesigner.VSIsolatedView.get_ViewHandle() at
MS.Internal.Host.Isolation.IsolatedView.get_ViewHandle() at
MS.Internal.Designer.DesignerPane.LoadDesignerView()

我究竟做错了什么?没有<r:RibbonGroup Name="Test" />它工作正常!

感谢您的帮助和时间

4

2 回答 2

0

我怀疑您使用的是旧版本,因为 Label 属性不再有效。最新版本可以在这里找到。

于 2011-03-25T22:46:34.410 回答
0

我下载了该功能区,但由于某种原因无法添加参考。无论如何,我下载了一个示例,它明确表示如果 Group 为空,则会抛出异常。所以现在一切正常。谢谢你的帮助!

于 2011-03-28T06:50:18.620 回答