易桐䦀 2022-03-24 16:27
浏览 21
已结题

WPF 中订阅事件没得任何反应

点击按钮没得textBox中内容不发送改变,跟踪后发现PropertyChanged没有起到作用,各位分析下。

img

这是 dateModel类代码

using System;
using System.ComponentModel;
using System.Windows.Media;

namespace dateModel
{
    public class DateModel:INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler? PropertyChanged;

        private string _value = "我是初始数据,颜色橘色";
        private Brush _valueColor = Brushes.Orange;
        public Brush ValueColor
        {
            get { return _valueColor; }
            set
            {
                _valueColor = value;
                ChangeEVent("ValueColor");//订阅颜色改变
            }
        }
        public string Value
        {  
            get { return _value; }
            set
            {
                _value = value;
                ChangeEVent("Value");//订阅内容改变
                if (value == "我是改变数据,颜色红色") ValueColor = Brushes.Red;
            }
        }
       /// <summary>
       /// 订阅事件
       /// </summary>
       /// <param name="name">事件名称</param>
        private void ChangeEVent( String name)
        {
            if (name != "")
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
                }
            }

        }


    }
}


这是MainWindow代码

using dateModel;
using System.Windows;


namespace test
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

         DateModel? dateModel = null;
        public MainWindow()
        {
            InitializeComponent();
            dateModel = new DateModel();
            this.DataContext = new DateModel();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            dateModel!.Value = "我是改变数据,颜色红色";
            
        }
    }
}

这是xaml代码

<Window x:Class="test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:test" xmlns:datemodel="clr-namespace:dateModel" d:DataContext="{d:DesignInstance Type=datemodel:DateModel}"
        mc:Ignorable="d"
        Title="MainWindow" FontSize="40" Height="450" Width="800">
    <Grid>
        <Button VerticalAlignment="Center" HorizontalAlignment="Right" Width="120" Height="60"  Content="修改" Click="Button_Click"  />
        <TextBox
            VerticalAlignment="Center"
            HorizontalAlignment="Left"
            Width="650"
            Text="{Binding Value}"
            Foreground="{Binding ValueColor}"
           
            />
    </Grid>
</Window>
  • 写回答

1条回答 默认 最新

  • 易桐䦀 2022-03-25 13:32
    关注

    这段代码马虎了,把第2段 this.DataContext = new DateModel();改为this.DataContext = dateModel;就ok了。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月25日
  • 修改了问题 3月24日
  • 创建了问题 3月24日

悬赏问题

  • ¥50 通过下面文章的方法求手机号段
  • ¥15 有偿求码,CNN+LSTM实现单通道脑电信号EEG的睡眠分期评估
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体