2012-07-30 57 views
0

我想将我的C#Windows Forms应用程序中的ButtonEnabled属性绑定到实例DataSet变量是否有更改。 (即,如果DataSet是不变的,禁用保存按钮。)将Button的“Enabled”属性绑定到DataSet.HasChanges()

麻烦的是,DataSet.HasChanges被实现为方法,而不是作为一个属性,所以它不能被绑定到。有没有简单的方法来实现这一点?我以错误的方式接近这个吗?看起来像这样的事情比在数据更改的地方手动禁用和启用按钮要容易得多。

在我的研究中,我想到了this question,但其解决方案(设计类,以便您需要绑定的属性)对于这种情况似乎不切合实际。

+0

您可以启用按钮所有的时间,然后在事件处理程序中检查数据集中的更改(也许让它显示一个MessageBox或什么都不做),只是一种替代方法。 – Bridge 2012-07-30 15:48:59

+0

它会工作,但它看起来会显得不专业。如果没有什么可以保存的话,我宁愿禁用按钮。如果我不能以这种方式工作,但我可能只需要使用你的想法。 – vergenzt 2012-07-30 15:53:51

+0

您可以将代表HasChanges的视图模型添加为属性。 – Neil 2012-07-30 16:59:24

回答

0

在WinForms应用程序中,您不需要将按钮的Enabled属性直接绑定到DataSet上。构建一个中间层(这将更容易维护和扩展),并将一个类将DataSet的方法解释为控件可绑定的属性:

public bool HasChanges 
{ 
    get 
    { 
     return myData == null ? false : this.myData.HasChanges(); 
    } 
} 
+0

这真的不行。如果DataSet发生更改,则此属性不会自动更新,并且用户的按钮的已启用属性不会更改。 – LarsTech 2012-07-30 19:42:02

+0

当数据集更新时,他需要做的就是通知UI该属性已更改,与通知任何属性已更改的方式相同。 – EtherDragon 2012-07-30 19:44:30

+0

我猜我掩盖了“不需要绑定”部分... – LarsTech 2012-07-30 20:00:04