在Expression Blend 4(Silverlight项目)中我有一个UserControl,我已添加了一个CLR属性。该属性是在UC内定义的枚举类型。我已将ChangePropertyAction行为附加到UC的一个实例。然而,XAML分析器提供了以下错误(等等):引用XAML中的类中定义的枚举
“+”是不是在
这是因为下面的XAML(片断)已经生成一个名称有效:
<local:SomeControl Margin="155,113,317,0" d:LayoutOverrides="Width, Height">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<ei:ChangePropertyAction PropertyName="MyProp">
<ei:ChangePropertyAction.Value>
<local:SomeControl+MyEnum>Second</local:SomeControl+MyEnum> <----- Error on this line caused by the '+'
</ei:ChangePropertyAction.Value>
</ei:ChangePropertyAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</local:SomeControl>
背后的代码:
public partial class SomeControl : UserControl
{
public SomeControl()
{
// Required to initialize variables
InitializeComponent();
}
public MyEnum MyProp
{
get; set;
}
public enum MyEnum
{
First,
Second,
Third
}
}
一个简单workround是 “促进” 吨他从类内部枚举(例如SomeControl_MyEnum),但有没有更清晰的解决方案?
感谢您的回复。然而事实证明,x:Static只是WPF,我没有提到我的项目是Silverlight。对不起,我很愚蠢。 – SoundCrowd 2010-10-10 21:49:17
经过一些试验和错误后,我发现我可以简单地替换ChildPropertyAction.Value元素,并将所需的枚举值作为父元素的Value属性插入。当然,每当我改变Blend中的ChangePropertyAction行为时,我都必须重新编辑并再次编辑。 – SoundCrowd 2010-10-10 21:53:15
啊,我看到我**在标签中提到了Silverlight,但不是主体。已更新帖子以澄清。 – SoundCrowd 2010-10-10 21:57:45