【发布时间】:2014-05-19 00:48:34
【问题描述】:
我正在尝试使用 Behaviors SDK 中的 DataTriggerBehavior。但它似乎不适用于枚举......否则我做错了什么。
您可以假设这些示例的DataContext 是这样的(INotifyPropertyChanged 已实现,但我不打算在这里展示):
public class MyDataClass
{
public MyEnum ItemCommand { get; set; }
public string ItemCommandString { get; set; }
}
public enum MyEnum
{
EnumValue1
}
_Button.DataContext = new MyDataClass() { ItemCommand = MyEnum.EnumValue1,
ItemCommandString = "EnumValue1" };
这是不起作用的代码(尝试指定枚举值并检查 ItemCommand 枚举属性):
<ToggleButton x:Name="_Button">
<Interactivity:Interaction.Behaviors>
<Core:DataTriggerBehavior Binding="{Binding ItemCommand}"
Value="EnumValue1">
<Core:ChangePropertyAction PropertyName="Command"
TargetObject="{Binding ElementName=_Button}"
Value="{x:Null}">
</Core:ChangePropertyAction>
</Core:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</ToggleButton>
而且这段代码(检查枚举资源)也不起作用:
<UserControl.Resources>
<local:MyEnum x:Key="_MyEnumValue">EnumValue1</local:MyEnum>
</UserControl.Resources>
<ToggleButton x:Name="_Button">
<Interactivity:Interaction.Behaviors>
<Core:DataTriggerBehavior Binding="{Binding ItemCommand}"
Value="{StaticResource _MyEnumValue}">
<Core:ChangePropertyAction PropertyName="Command"
TargetObject="{Binding ElementName=_Button}"
Value="{x:Null}">
</Core:ChangePropertyAction>
</Core:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</ToggleButton>
而这段代码(检查字符串)确实有效:
<ToggleButton x:Name="_Button">
<Interactivity:Interaction.Behaviors>
<Core:DataTriggerBehavior Binding="{Binding ItemCommandString}"
Value="EnumValue1">
<Core:ChangePropertyAction PropertyName="Command"
TargetObject="{Binding ElementName=_Button}"
Value="{x:Null}">
</Core:ChangePropertyAction>
</Core:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</ToggleButton>
在DataTriggerBehavior Value 属性中指定枚举值的正确方法是什么?
【问题讨论】:
-
我认为它是因为
Enum不能为空,所以它将默认为“EnumValue1”,因此当您设置它时它不会更改,因为它已经是“EnumValue1”,尝试更改为“EnumValue2”进行测试" 或将Enum属性设为可为空(如果可能)
标签: xaml enums windows-runtime windows-store-apps