c# - 将用户控件绑定(bind)到 bool 属性的对面

标签 c# winforms data-binding

非常简单:我希望做与 this 相同的事情但在 winforms 中。谷歌似乎提取的所有内容都是特定于 wpf 的(即,我不想引用 presentationframework.dll)

如果您不想阅读链接,请解释:

以下是我想做的事情的意图的表示,尽管它显然行不通。

CheckBox1.DataBindings.Add(new Binding("Checked", this.object, "!SomeBool"));

最佳答案

你有两个选择:

  1. 手动创建Binding 对象并附加到FormatParse事件并交换每个事件中的值。
  2. 在类上创建一个附加属性,该属性只是反转预期属性的逻辑

第一个选项更简洁,IMO,因为它不会强制您的类的 API 遵循您的 UI 设计,尽管第二个选项(略微)更容易。

选项 1 的示例

private void SwitchBool(object sender, ConvertEventArgs e)
{ 
    e.Value = !((bool)e.Value);
}

...

Binding bind = new Binding("Checked", this.object, "SomeBool");

bind.Format += SwitchBool;
bind.Parse += SwitchBool;

CheckBox1.DataBindings.Add(bind);

选项 2 的示例

public class SomeClass
{
    public bool SomeBool { get; set; }

    public bool NotSomeBool
    {
        get { return !SomeBool; }
        set { SomeBool = !value; }
    }
}

...

CheckBox1.DataBindings.Add("Checked", this.object, "NotSomeBool");

同样,我非常赞成选项 1,因为选项 2 要求您根据您的 UI 设计定制您的类。

关于c# - 将用户控件绑定(bind)到 bool 属性的对面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2464102/

相关文章:

c# - 使用 LINQ 从模型中获取父项名称和子项计数

c# - 登录 Winform 应用程序

c# - 从 C# 中的图形对象将图像保存为 byte[]

c# - 将Webview2 Source直接设置为二进制流

c# - 如何在 .NET 中显示负号?

javascript - Angularjs 指令隔离范围 + 单向数据绑定(bind)不适用于对象?

wpf - 将 WPF 数据网格绑定(bind)到多个数据源

android - 数据绑定(bind)没有得到 "Identifiers must have user defined types from the XML file"错误

javascript - 如何在MVC4的UI中使用jQuery创建DataTable?

c# - 当我将鼠标悬停在 GMap.NET 控件上时,为什么我的表单在最上面?