DataTriggerBehavior 不适用于 Enum?

2023-12-28

我正在尝试使用DataTriggerBehavior来自行为 SDK。但它似乎不适用于枚举......否则我做错了什么。

您可以假设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, Type targetType, object parameter, 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 更糟糕

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DataTriggerBehavior 不适用于 Enum? 的相关文章

随机推荐

  • Java 执行器:当任务完成时,如何在不阻塞的情况下收到通知?

    假设我有一个充满任务的队列 我需要将其提交给执行器服务 我希望一次处理一个 我能想到的最简单的方法是 从队列中取出一个任务 提交给执行人 对返回的 Future 调用 get 并阻塞 直到有结果可用 从队列中取出另一个任务 但是 我试图完全
  • Android - 如何仅通过单击应用程序图标来执行项目的主要功能?

    我正在制作一个应用程序 并且需要仅通过单击其图标来执行其主要功能 换句话说 没有布局 没有小部件 只是它的工作 一旦用户单击该图标 它就应该执行其主要功能 我想到的一种方法是将所有代码放入onCreate功能 或者如果还有其他方法请分享给我
  • 应用程序被终止时的 Android 地理围栏

    我的主要要求是让服务拥有自己的流程并触发自己的地理围栏事件 我希望用户在进入地理围栏时收到通知中心的通知 即使应用程序被终止也是如此 我阅读了有关服务的内容 这对我来说似乎很清楚 Android 文档很丰富 因此我设法了解如何使用自己的进程
  • ggplot2/R 输出 pdf 太大

    我正在 MacBook Pro 中的 ggplot2 中生成 32x32 图块 每个图块小于四分之一英寸 x 四分之一英寸大小 热图 这是相对简单的东西 然而 它的 pdf 输出很大 大约 7MB 当我将其加载到 pdflatex 中时 加
  • 创建 Vuex 存储后,如何手动将 getter/mutations 添加到 Vuex 存储中?

    我正在尝试在我的 Vuejs 组件之一的 created 生命周期挂钩中添加新变量 getter 和突变 变量工作正常 但对于 getters mutations 来说 似乎并不像向 vuex 存储对象添加新函数那么容易 我试图解决的问题是
  • 将样式添加到 textarea 的特定行

    我有动态的 html textarea 它的内容逐行更改 我想为更新或修改的行内容添加一些样式 是否有任何窗口选择 例如属性 可以做到这一点 我想要的是让用户感觉到改变已经发生happen 或者还有其他方法可以实现吗 没有简单的方法可以仅通
  • Android 上的 CDMA PDU 解析

    我编写了一个程序来解码 CDMA 3GPP2 点对点 SMS 消息 我在互联网上找到的几个 CDMA PDU 十六进制字符串上对其进行了测试 效果非常好 然而 当我尝试在 Android 平台上的所有传入短信上实现它时 它总是失败 我查看了
  • 在扭曲协议中定期运行函数

    我正在寻找一种方法来定期通过连接到 TCP 端口的所有客户端发送一些数据 我正在看扭曲的Python 我知道reactor callLater 但是我如何使用它定期向所有连接的客户端发送一些数据 数据发送逻辑位于Protocol类中 由反应
  • AbstractDataTable fireTableDataChanged() 不刷新jtable

    我在向 jtable 添加数据时遇到困难 它首先从集合中加载数据 使用 jtextfield 添加新数据 当然数据已添加到调试过的集合中 但我无法在 jtable 中显示新添加的日期 我已经尝试了所有可能的方法但无法成功 下面的代码是我工作
  • 为样式表创建有效的条件注释,不会出现“虚假注释”验证器错误

    我的 head 标签中有以下内容
  • 启动画面不会将焦点返回到主窗体

    我大家 目前 我在使用启动画面时注意力不集中 我使用的是 VS2008 带有 NET Framework 2 0 另外 我已将我的项目与 VisualBasic dll 链接起来 因为我使用 ApplicationServices 来管理我
  • 该页面的状态信息无效并且可能已损坏

    在 Internet Explorer 中浏览我的 asp net 页面时 我收到以下错误 在 Firefox 或 Mozilla 中 一切正常 我尝试了不同的方法 因为我认为 VIEWSTATE 存在以下问题
  • 哪些 C++0x 标头应该定义 nullptr?

    现在 C 0x 即将到来 我一直在尝试它 特别是使用 nullptr 我无法弄清楚如果需要使用它 应该包含哪些标准头文件 任何帮助表示赞赏 不需要标头 它是一个内置关键字 lex nullptr 2 14 7 指针文字 lex nullpt
  • 可以索引子查询吗?

    我有一个表和一个查询 如下所示 有关工作示例 请参阅此SQL小提琴 http sqlfiddle com 2 762a82 13 SELECT o property B SUM o score1 w score FROM o INNER J
  • 最长匹配子串

    如何在 varchar 变量中搜索最长的匹配项 例如 表 GOB 的条目如下 magic word prize sh 0 20 sha 0 40 shaz 0 60 shaza 1 50 我想编写一个 plpgsql 函数 它在其他参数中接
  • 在Github上,将PR合并到不同的分支

    假设有人在 Github 上向 public master 提交了一个 PR 有没有办法将该 PR 合并到不同的分支中 否则 看起来我必须合并到 public master 中 然后将其向后合并到开发 登台分支中 这就像让人们做一个修补程序
  • 线程并获取连接电话的 COM 端口

    我有以下代码 using System using System Collections Generic using System ComponentModel using System Data using System Drawing
  • 如何使用python绘制彩色扇形?

    我需要可视化传感器的视场 因此 我需要使用 python matplotlib 绘制一个扇区 并用颜色 alpha Use a 楔形艺术家 http matplotlib org api artist api html matplotlib
  • 将大型 CSV 从 Cloud Storage 导入 App Engine 数据存储区

    我有一个大的 CSV 文件 大约 1 GB 大 并且想要在数据存储中创建实体 每行一个实体 该 CSV 文件当前驻留在 Google Cloud Storage 中 有没有一种干净的方法来做到这一点 我可以在网上找到的所有示例似乎都依赖于本
  • DataTriggerBehavior 不适用于 Enum?

    我正在尝试使用DataTriggerBehavior来自行为 SDK 但它似乎不适用于枚举 否则我做错了什么 您可以假设DataContext对于这些例子来说是这样的 INotifyPropertyChanged已实现 但我不打算在这里展示