C# 使按钮在两个条件为真后可见,可绑定属性
Posted
技术标签:
【中文标题】C# 使按钮在两个条件为真后可见,可绑定属性【英文标题】:C# make button visible after two criteria are true with bindable property 【发布时间】:2018-02-28 15:36:29 【问题描述】:我将一个按钮默认设置为IsEnabled = false
。两个Entries
输入并验证后,按钮应更改为IsEnabled = true
。
这是我的主页上目前为止的内容:
var button = new Button
Text = "Text",
.
.
.
IsEnabled = false
;
var entry1 = new Entry
.
.
.
;
var entry1 = new Entry
.
.
.
;
button.SetBinding(Button.CommandProperty, "EnableButtonComand");
在我的 ViewModel 上我有这个:
bool isValidatedEntry1 = false;
bool isValidatedEntry2 = false;
bool isAllValidated = false;
public Command EnableButtonCommand get;
public bool IsValidatedEntry1
get return isValidatedEntry1;
set isValidatedEntry1 = value; OnPropertyChanged("IsValidatedEntry1"); OnPropertyChanged("IsAllValidated");
public bool IsValidatedEntry2
get return isValidatedEntry2;
set isValidatedEntry2= value; OnPropertyChanged("IsValidatedEntry2"); OnPropertyChanged("IsAllValidated");
public bool IsAllValidated
get return isAllValidated;
set if (IsValidatedEntry1 && IsValidatedEntry2)
isAllValidated = true;
else
isAllValidated = false;
OnPropertyChanged("IsAllValidated");
EnableButtonCommand.ChangeCanExecute();
这在我的 ViewModel 类的构造函数中:
public Constructor()
EnableButtonCommand = new Command(EnableButton, () => !IsAllValidated);
验证成功后,我的Validation-Class
将属性设置为True
。
我使用断点,看起来IsAllValidated
属性从未更新——只有“条目”属性是。为什么会发生这种情况,我应该改变什么?
【问题讨论】:
什么...为什么要在代码中创建 UI? 这与主题无关... 我没这么说。这表明更深层次的问题。 【参考方案1】:IsAllValidated
作为可设置属性没有多大意义,因为它不需要value
,并且不需要存储任何东西(因为它的状态完全依赖于其他人,如果我在解释你的要求正确)。相反,我会尝试这样的事情:
public bool IsAllValidated => IsValidatedEntry1 && IsValidatedEntry2;
【讨论】:
我会尝试将EnableButtonCommand.ChangeCanExecute()
添加到两个 Entry 属性的设置器中(或者添加一个他们可以调用的通用方法)。或者,您可能想检查Button.CommandProperty
是否是button.SetBinding
调用的正确绑定...这些都没有告诉按钮将其IsEnabled
从初始值更改为false。
看来是这样。感谢您的建议,但它不起作用。你有其他想法来完成我的任务吗?不可能那么难...我确定我只是缺少一些小代码!以上是关于C# 使按钮在两个条件为真后可见,可绑定属性的主要内容,如果未能解决你的问题,请参考以下文章