rygzptl 2023-12-25 17:29 采纳率: 25%
浏览 2
已结题

WPF数据双向绑定问题

WPF 数据绑定问题

文本内容与数据进行绑定,发现无法实现双向绑定,只能代码单向到界面更新,无法界面更新数据到属性中

private ObservableCollection<string> _sn_code;
        private ObservableCollection<string> sn_code
        {
            set { _sn_code = value; OnPropertyChanged(); }
            get { return _sn_code; }
        }

WPF:
Text="{Binding sn_code[1],Mode=TwoWay}"

有无解决办法。

追加代码:

public class ViewModelBase : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged([CallerMemberName] string propertyName = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }

  • 写回答

2条回答 默认 最新

  • 社区专家-Monster-XH 2023-12-25 17:30
    关注

    基于Monster 组和AIGC的调写:若有帮助,还望采纳~~:

    • 在WPF中实现双向数据绑定时,确保你遵循以下步骤:
    1. 确保你的类实现了INotifyPropertyChanged接口。

    2. 用公开属性进行绑定。你代码sn_code属性是私有的,应该是公开的(public),因为WPF的数据绑定机制只能与公开属性交互。

    改进版本:

    public class YourViewModel : INotifyPropertyChanged
    {
        private ObservableCollection<string> _sn_code;
        public ObservableCollection<string> sn_code
        {
            get { return _sn_code; }
            set
            {
                if (_sn_code != value)
                {
                    _sn_code = value;
                    OnPropertyChanged(nameof(sn_code));
                }
            }
        }
    
        public event PropertyChangedEventHandler PropertyChanged;
    
        protected virtual void OnPropertyChanged(string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    

    确保你的数据上下文(DataContext)设置正确,并且YourViewModel类的实例被用作数据上下文。

    在XAML中,绑定看起来是正确的,但确保其上下文确实是你的YourViewModel类的实例。

    <TextBlock Text="{Binding sn_code[1], Mode=TwoWay}" />
    

    如果依然遇到问题,检查以下方面:

    • 数据上下文是否正确设置。
    • 有无错误信息在输出窗口(如绑定错误)。
    • ObservableCollection是否正确初始化并包含足够的元素(至少两个,因为你绑定到sn_code[1])。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月25日
  • 已采纳回答 12月25日
  • 修改了问题 12月25日
  • 赞助了问题酬金15元 12月25日
  • 展开全部

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。