[英]Bind IsEnabled to linq property with linq expression
我想将XAML按钮的属性“ IsEnabled”绑定到条件,例如“仅当我的Observable集合中的所有项目都具有IsValid属性= true时才启用按钮”。 因此,Linq表达式将如下所示:
MyObsCollectionProp.Any(record=>!record.IsValid)
要么
MyObsCollectionProp.All(record=>record.IsValid)
Sombody可以告诉我执行此操作的合法有效方法(针对MVVM模式)吗?
将名为IsButtonEnable的布尔属性声明为:
private bool isButtonEnable;
public bool IsButtonEnable
{
get
{
return isButtonEnable;
}
set
{
isButtonEnable = value;
OnPropertyChanged("IsButtonEnable");
}
}
将具有此属性的按钮绑定为:
<Button Content="Save Data" IsEnable="{Binding IsButtonEnable, UpdateSourceTrigger=PropertyChanged}"></Button>
现在,在您的ViewModel中,将ObservableCollectionChanged事件绑定为:
public MyViewModel()
{
MyObsCollectionProp = new ObservableCollection<YourModel>();
MyObsCollectionProp += MyObsCollectionProp_Changed;
}
void MyObsCollectionProp_Changed(object sender, NotifyCollectionChangedEventArgs e)
{
// Handle here
IsButtonEnable = MyObsCollectionProp.All(record=>record.IsValid)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.