2017-07-31 75 views
1

我想在XAML按鈕的屬性「IsEnabled」綁定到條件,如「只有當我的Observable集合中的所有項都具有IsValid屬性= true時啓用按鈕」。所以LINQ表達式將如下所示:綁定IsEnabled linq屬性與linq表達式

MyObsCollectionProp.Any(record=>!record.IsValid) 

MyObsCollectionProp.All(record=>record.IsValid) 

sombody能告訴我的法律和有效(MVVM模式)的方式來做到這一點?

+1

回報作爲模型中的一個屬性? – Aybe

+0

@Aybe,是的,但在viewModel,而不是模型,並將其綁定到xaml的IsEnabled屬性 –

回答

1

聲明一個名爲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> 

現在,在您的視圖模型綁定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) 
} 
+0

謝謝!這工作。 –