如何以编程方式在 C# 中指定单向绑定?

Posted

技术标签:

【中文标题】如何以编程方式在 C# 中指定单向绑定?【英文标题】:How to programmatically specify one-way binding in C#? 【发布时间】:2021-06-18 00:30:13 【问题描述】:

简单的 C# 问题,但我一直无法找到答案,尽管搜索了很多。 (我想我知道它在 WPF XAML 文件中是如何工作的,但我正在使用 WinForms 并以编程方式绑定)。这一定很简单。我如何告诉它单向绑定?

在这种情况下,chkUnchkAllChkBx 是一个复选框。如果选中某个面板中的所有复选框,则 AllCheckBoxesChecked 为 boolean = true。 (面板的内容事先不知道)。

-阿拉姆

        public AllCheckBoxesChecked panelCheckBoxesChecked = new AllCheckBoxesChecked();        
    chkUnchkAllChkBx.DataBindings.Add("Checked",panelCheckBoxesChecked,"AllChecked");
    
    public class AllCheckBoxesChecked : INotifyPropertyChanged
     private bool _allChecked;

        public AllCheckBoxesChecked()
        
            _allChecked = false;
        
        public bool AllChecked
        
            get  return _allChecked; 
            set
            
                _allChecked = value;
                OnPropertyChanged("AllChecked");
            
        
       public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string info)
        
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            
                handler(this, new PropertyChangedEventArgs(info));
            
        
     

【问题讨论】:

【参考方案1】:

在 WPF 的 BindingMode 的 WinForms 中没有等效项。所以让我们澄清一下这个问题。只有当 AllCheckBoxesChecked.AllChecked 的值通过更改绑定的 CheckBox chkUnchkAllChkBx 的值而更改时,才会出现问题,在应用程序中会产生不受欢迎的效果,例如“某些”面板中所有 CheckBox 的值将被更改为与 chkUnchkAllChkBx 相同的值。

假设您确实遇到了这些问题,您只需要确保绑定类 AllCheckBoxesChecked 的使用方式不会导致问题。根据您的应用程序,一种可能有效的简单方法是使 AllCheckBoxesChecked.AllChecked 成为仅获取属性,其支持字段的值由方法设置。像这样的:

public bool AllChecked
    
        get  return _allChecked; 
    

public void SetAllChecked(bool value)
    
        _allChecked = value;
        OnPropertyChanged("AllChecked");
    

【讨论】:

以上是关于如何以编程方式在 C# 中指定单向绑定?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式在 networkx 的 pygraphviz/dot 包装器中指定相同等级的节点

如何在淘汰赛中使用单向绑定

如何在 Postman Collection 中指定 JSON 请求正文示例

当绑定项为对象并动态修改时,单向绑定不起作用

Vue.js单向绑定和双向绑定实例分析

在 Angular 1.5 中使用“单向绑定”(<) 有啥意义?