[英]How to programmatically specify one-way binding in C#?
簡單的 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));
}
}
}
WPF 的 BindingMode 的 WinForms 中沒有等效項。 所以讓我們澄清一下這個問題。 只有當 AllCheckBoxesChecked.AllChecked 的值通過更改綁定的 CheckBox chkUnchkAllChkBx 的值而更改時,才會出現問題,在應用程序中會產生不受歡迎的效果,例如“某些”面板中所有 CheckBox 的值將被更改為與 chkUnchkAllChkBx 相同的值。
假設您確實遇到了這些問題,您只需要確保使用綁定 class AllCheckBoxesChecked 的方式不會導致問題。 根據您的應用程序,一種可能有效的簡單方法是使 AllCheckBoxesChecked.AllChecked 成為僅獲取屬性,其支持字段的值由方法設置。 像這樣的東西:
public bool AllChecked
{
get { return _allChecked; }
}
public void SetAllChecked(bool value)
{
_allChecked = value;
OnPropertyChanged("AllChecked");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.