WPF设计器问题引用枚举

时间:2013-08-26 19:29:27

标签: c# wpf xaml enums

所以我在这个例子中使用staticextension引用了一个枚举,它在运行时工作正常,但由于错误“无法创建类型'StaticExtension'的实例'而在设计时失败。”

我理解这意味着它认为它需要枚举类型的实例来实际引用它。但是,枚举在窗口中定义为静态,所以我不明白它为什么会出现问题。

有没有合理的方法让设计师工作?到目前为止我发现的最接近的是将它放在objectdataprovider中并创建返回枚举值的方法。在幕后,这基本上是创建一个引用静态类型的对象,并且似乎只需要将枚举值拉出来就太多了。这里的目标是能够引用单个枚举类型并显示它们。

<Window 
  x:Class="DaedalusGraphViewer.GraphViewerWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:DaedalusGraphViewer="clr-namespace:DaedalusGraphViewer">
 <StackPanel>
    <Label Content="testtesttest">
      <Label.ContextMenu>
        <ContextMenu>
          <MenuItem Header="{x:Static DaedalusGraphViewer:GraphViewerWindow+Test.test1}"/>
        </ContextMenu>
      </Label.ContextMenu>
    </Label>
  </StackPanel>  
</Window>

C#:

using System.Windows;

namespace DaedalusGraphViewer
{
  /// <summary>
  /// Interaction logic for GraphViewerWindow.xaml
  /// </summary>
  public partial class GraphViewerWindow : Window
  {
    public GraphViewerWindow()
    {
      InitializeComponent();
      Application.Current.MainWindow = this;
    }

    public enum Test
    {
      test1, test2
    }
  }
}

1 个答案:

答案 0 :(得分:3)

这是设计师中已知的bug。解决方法是不要将嵌套类型与设计器一起使用。