2
所以我在本例中引用了一個使用staticextension的枚舉,該運行時可以正常工作,但由於錯誤「無法創建類型爲'StaticExtension'的實例」而在設計時失敗。引用枚舉的WPF設計者問題
我明白這意味着它認爲它需要一個枚舉類型的實例來實際引用它。但是,枚舉在窗口中被定義爲靜態,所以我不明白爲什麼它有問題。
是否有任何合理的方法來保持設計師的工作?到目前爲止我發現的最接近的是將它放在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
}
}
}
我明白了。那真不幸。這意味着我必須用枚舉來污染命名空間或創建特定的枚舉命名空間。這是做事的常用方式嗎? –
https://connect.microsoft.com/VisualStudio/feedback/details/361509/xaml-designer-cannot-handle-typename-with-nested-class在VNext中修復,因此可能是VS2k12。 – user7116
@JamesJoshuaStreet:好的,嵌套枚舉*不是*慣例。就我個人而言,我不明白,爲什麼你稱之爲「污染命名空間」。例如,看看FCL,並將嵌套枚舉數與常規枚舉數進行比較。 – Dennis