我有这个ComboBox
<ComboBox Name="company" Width="120"
HorizontalAlignment="Right" Margin="5"
IsSynchronizedWithCurrentItem="True"
ItemsPanel="{DynamicResource Virtualized}"
ItemsSource="{x:Static local:Repository.Customers}"
SelectedItem="{Binding Path=SelectedCustomer}"
DisplayMemberPath="CM_FULL_NAME""/>
它运行。有用。除了设计师,因为错误不允许我做任何事情:
ArgumentException was thrown on "StaticExtention": Exception has been thrown by the target of an invocation.
详细
The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.
我在静态类中尝试过几个东西来跳过设计时的构造函数,但没有一个能修复错误:
if (LicenseManager.UsageMode == LicenseUsageMode.DesignTime)
if (DesignerProperties.GetIsInDesignMode(this))
if (System.Reflection.Assembly.GetExecutingAssembly().Location.Contains("VisualStudio"))
如果其中任何一个为真,则在构造函数中返回。仍然得到错误。
编辑:不确定它是否有任何区别,但静态存储库类使用EF4从数据库获取。
Edit2 :还试过ItemsSource {Binding}到静态列表,仍然得到同样的错误。注意,将其称为存储库是一种误称,列表在启动时加载,从未更改过。下面的答案不起作用,仍然试图解决这个问题。
Edit3 :Thomas'调试设计模式的建议不可行。我使用的是VS2010 Express,工具菜单没有附加到处理选项。我仍然不知道为什么这会破坏设计师并在运行时工作。
答案 0 :(得分:3)
在Customers
属性的getter中,尝试添加以下代码:
if (DesignerProperties.GetIsInDesignMode(new DependencyObject()))
return null;
答案 1 :(得分:2)
托马斯回答:
if (DesignerProperties.GetIsInDesignMode(new DependencyObject()))
return null;
在静态构造函数中工作。