简单的数据触发器不起作用。为什么?

2023-12-22

我试图根据 bool 属性更改文本块的前景色,单击按钮时其值会更改。但是,由于某种原因,这不起作用。另外,我是否必须首先将 bool 属性添加到列表中?我尝试将 bool 属性直接添加到 DataContext,但这也不起作用。任何帮助,将不胜感激。

    public static bool IsOn { get; set; }
    public static List<bool> boo;

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        IsOn = true;
        boo = new List<bool>();
        boo.Add(IsOn); 
        DataContext = boo;                   
    }
<Window.Resources>
    <Style TargetType="TextBlock">
        <Setter Property="Foreground" Value="Green" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=IsOn}" Value="true">
                <Setter Property="Foreground" Value="Red" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Grid>
    <StackPanel>
        <Button Click="Button_Click" Content="Change Color" />
        <TextBlock Name="textBlockColor" Text="My Foreground Color" />
    </StackPanel>

首先你的班级必须实现INotifyPropertyChanged (msdn http://msdn.microsoft.com/en-US/library/system.componentmodel.inotifypropertychanged.aspx) 通知视图您的财产已更改。

其次你必须分配DataContext in MainWindow构造函数。

Example:

public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();

        this.DataContext = this;
    }

    private bool _isOn;
    public bool IsOn
    {
        get { return _isOn; }
        set { _isOn = value; OnPropertyChanged("IsOn"); }
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        IsOn = !IsOn;          
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(propName));
    }
}

您的 XAML 代码没问题。

当您的绑定不起作用时,您应该使用snoop http://snoopwpf.codeplex.com/将来。

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

简单的数据触发器不起作用。为什么? 的相关文章

随机推荐

  • Windows:如何查询低级键盘挂钩中修饰键的状态?

    对于 USB 键盘配置工具 我需要拦截所有键盘输入并检测同时按下哪些修饰键和普通键 因此 我使用 Windows 低级挂钩 WH KEYBOARD LL 它工作正常 只是我无法确定 WIN 键 VK LWIN VK RWIN 是否被按下 c
  • 如何为未知长度的输入字符串分配内存?

    这是结构 typedef struct friend char firstname char lastname char birthdate 9 friend 我对如何让用户输入字符串并将其放置在friend结构为firstname or
  • SSIS 2012 未找到方法:无效

    最近 当我想打开 OLE DB 源组件时 我在每个 SSIS 包 使用 Visual Studio 2012 中都遇到此错误 Method not found Void Microsoft DataTransformationService
  • Mono / Ubuntu - 定义冲突

    我正在尝试在 Ubuntu 上构建一个库 Medsphere Widgets 但它抛出了一个错误 我已经进行了很好的搜索 但似乎没有人能找到答案 配置脚本工作正常 并且完成时没有警告或错误 当我去运行 make 时 它 会执行以下操作 po
  • 复制项目行为不一致?

    考虑这个目录结构 C temp A file txt C temp B 如果我运行命令 Copy Item C temp A C temp B A Recurse Force ErrorAction Stop I have C temp A
  • 如何在 Google Dialogflow Fullfilment 内联编辑器中安装 npm 包

    我想在我的聊天机器人中安装一些 npm 包 但我无法使其工作 package json 文件如下所示 name dialogflowFirebaseFulfillment description This is the default fu
  • 埃尔兰的哲学家餐厅

    如果您以前看过 哲学家就餐 那么您就会知道有几种方法可以做到这一点 我的实现创建了与消息传递进行通信的哲学家和分叉进程 我有很多关于分叉和哲学家进程格式的程序 但我自己弄清楚了 现在我将分享完成的代码 我是初学者仅供参考 祝你今天过得愉快
  • java构造函数有什么意义?

    所以我正在学习java 我已经一个月了 我刚刚了解了构造函数 但我不明白创建一个的全部目的 我为什么以及何时想要使用它 我的整体想法是它没有 main 方法 您可以从主类中调用构造函数 任何人都可以就这个话题启发我 这对我有很大帮助 构造函
  • PHP,通过POST传递数组

    这是通过以下方式发送数组的最安全的方式POST foreach id as array
  • 如何用斜杠“/”替换反斜杠“\”?

    在我的代码中我想替换反斜杠字符 通过正斜杠字符 在一个字符串中 我尝试过以下代码 string str chosen file Replace where chosen file is a string其中包含大量出现的 特点 但它似乎不起
  • 猕猴桃屏幕。我必须用 super 初始化吗?

    来自docs https kivy org docs api kivy uix screenmanager html Declare both screens class MenuScreen Screen pass class Setti
  • wsimport 不使用复杂的输入类型

    当我使用 wsimport 为某些服务生成代理时 每个端口的生成方法签名似乎没有使用 WSDL 中指定的复杂类型 但我注意到其他一些服务确实如此 多种服务都发生过这种情况 但最近的例子是亚马逊的 AWSEConsumerService 链接
  • 将 YUI3 与 HTTPS 结合使用的“正确”方法是什么?

    我对 YUI2 有丰富的经验 并且正在快速了解 YUI3 我正在编写的服务需要 HTTPS 但普通的 YUI 体验是从雅虎的 HTTP only CDN 加载的 当浏览器尝试将 HTTPS 页面与 HTTP javascript 混合时 它
  • 使用 javascript 设置响应头

    我在从应用程序中的 URL 收集 json 值时遇到问题 当我尝试获取它们时 控制台中会显示错误日志 指出 access control allow origin 不允许来源 我研究了一下 发现响应标头必须设置为 Access Contro
  • 在 iOS 5 中的地图上放置 CLPlacemark

    在 iOS 5 中 有一种转发地理编码地址的新方法 将 1 Infinite Loop CA USA 等地址转换为 lat lang 地址 有关此的更多信息请参见此处 http developer apple com library ios
  • 在 mac 中通过应用程序(.jar)读取/写入文件时出现权限被拒绝错误

    我在 swing 中创建了一个应用程序 还为同一应用程序创建了一个安装程序 安装程序和应用程序都可以在 Windows 系统上完美运行 但我的问题是 当我尝试在 mac os 中运行它时 它并不能完美地处理所有数据 我发现在我的应用程序中我
  • 在Hibernate的EmptyInterceptor中注入JPA的实体管理器

    我在数据访问层中使用 JPA 2 0 和 Hibernate 出于审计日志记录的目的 我通过在 persistence xml 中配置以下属性来使用 Hibernate 的 EmptyInterceptor
  • 向 Java 程序添加音乐/声音

    我正在制作一些迷你 java 游戏 我想知道如何向我的程序添加声音 音乐 我在 youtube 上观看了视频并按照提供的代码进行操作 但是出现以下错误 java io IOException 无法从输入流创建音频流 我注意到其他人用相同的代
  • 我应该在哪一层将两个实体连接在一起?

    我使用 Spring MVC 和常规 JDBC 我刚刚了解到我应该将业务流程分为表示层 控制器层 服务层和存储库 DAO 层 现在假设我有一个名为Person可以有多个Jobs Job它本身是另一个实体 有自己的属性 据我所知 存储库层仅管
  • 简单的数据触发器不起作用。为什么?

    我试图根据 bool 属性更改文本块的前景色 单击按钮时其值会更改 但是 由于某种原因 这不起作用 另外 我是否必须首先将 bool 属性添加到列表中 我尝试将 bool 属性直接添加到 DataContext 但这也不起作用 任何帮助 将