xaml – DataTriggerBehavior不适用于Enum?
发布时间:2020-12-14 02:46:35 所属栏目:Windows 来源:网络整理
导读:我正在尝试使用Behaviors SDK中的DataTriggerBehavior.但它似乎与枚举无关……或者我做错了什么. 您可以假设这些示例的DataContext是这样的(实现了INotifyPropertyChanged,但我不打算在此处显示): public class MyDataClass{ public MyEnum ItemCommand { g
我正在尝试使用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属性中指定枚举值的正确方法是什么,以便这可以工作? 解决方法
你可以写一个转换器:
public class MyEnumConverter : IValueConverter { public object Convert(object value,Type targetType,object parameter,string language) { MyEnum myEnumValue = (MyEnum)value; return myEnumValue.ToString(); } public object ConvertBack(object value,string language) { throw new NotImplementedException(); } } 并在XAML中使用它: <ToggleButton x:Name="_Button"> <Interactivity:Interaction.Behaviors> <Core:DataTriggerBehavior Binding="{Binding ItemCommand,Converter={StaticResource MyEnumConverter}}" Value="EnumValue1"> <Core:ChangePropertyAction PropertyName="Command" TargetObject="{Binding ElementName=_Button}" Value="{x:Null}"> </Core:ChangePropertyAction> </Core:DataTriggerBehavior> </Interactivity:Interaction.Behaviors> </ToggleButton> 或者直接绑定到示例中的字符串.不幸的是,WinRT中的DataTriggerBehavior比Windows Phone 8中的DataTrigger更糟糕 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows – 为什么打开的DLL句柄不能保护文件不被移动?
- Windows – Win32命名管道和邮件大小限制 – 旧的64K限制仍
- windows – 在本地设置SVN?
- xaml – 在Windows窗体/ WPF中使用SVG的库?
- windows-server-2008-r2 – 在Windows Server 2008 R2上通过
- Windows系统命令行NET LOCALGROUP命令 新增 删除更新 用户组
- Jmeter安装篇(win10)
- windows – 如何将服务的启动/停止/重新启动权限授予非域成
- 用于在Windows上将node.js连接到odbc的库?
- windows-8 – WinRT MVVM Light示例项目
推荐文章
站长推荐
- OpenGL 基于OpenGL的三维机器人仿真
- windows安装memcache开启php扩展
- Windows Server 2012 Remotedesktop:连接到特定
- windows – 如何在控制台程序中为DirectSound Se
- 在Windows计算机上安装Git-server
- windows-server-2008-r2 – 用户在终端服务器上看
- 2019最精简系统—win10企业版LTSC2019怎样永久激
- windows-phone-8 – 如何使用WP8的LongListSelec
- 如何从命令行在Windows7上以管理员身份运行命令?
- windows – 如何通过命令行设置“自动检测设置”
热点阅读