我有3個複選框。讓我們稱他們爲cb1
,cb2
和cb3
。當檢查cb1
和cb2
時,應該檢查cb3
。我如何在WPF中實現這一點?我是WPF的新手。 在此先感謝。複選框綁定WPF
Q
複選框綁定WPF
1
A
回答
4
如果您使用的是視圖模型,只需添加一個新的計算性能對此。
一個簡單的視圖模型會是什麼樣子:
public class MyVieWModel : INotifyPropertyChanged
{
private bool _cb1Checked;
private bool _cb2Checked;
public bool CB1Checked
{
get { return _cb1Checked; }
set
{
_cb1Checked = value;
PropertyChanged(this, new PropertyChangedEventArgs("CB1Checked"));
PropertyChanged(this, new PropertyChangedEventArgs("CB3Checked"));
}
}
public bool CB2Checked
{
get { return _cb2Checked; }
set
{
_cb2Checked = value;
PropertyChanged(this, new PropertyChangedEventArgs("CB2Checked"));
PropertyChanged(this, new PropertyChangedEventArgs("CB3Checked"));
}
}
public bool CB3Checked
{
get { return _cb1Checked && _cb2Checked; }
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
設置CB1Checked
或CB2Checked
後,你需要提高的是CB3Checked
也改變了事件。
你的XAML看起來像(這是從內存...):
<CheckBox IsChecked={Binding CB1Checked}" />
<CheckBox IsChecked={Binding CB2Checked}" />
<CheckBox IsChecked={Binding CB3Checked, Mode=OneWay}" />
由於@wkl在評論中指出,第三複選框應該是單向的,因爲值綁定不能設置。
一些MVVM框架可能會讓你更容易一些,但我還沒有使用任何可以推薦的框架。
+1
只是想補充一點,當你綁定到一個只讀屬性時,你必須使用一個單向綁定的cb3。你可能想禁用cb3,以防止用戶手動改變它,從而破壞一致性。 – wkl
+0
@wkl優秀的一點,我會嘗試編輯,稍後當我有手工具 –
3
你可以做這樣的一個複選框:
我想其他的複選框被稱爲cb2
。
對於多個複選框,我建議您在Binding
DataContext
。
<CheckBox IsChecked="{Binding Path=CB_1_Checked}" Content="CheckBox 1" />
public bool CB_1_Checked
{
get { return _cb_1_checked; }
set
{
_cb_1_checked = value;
OnPropertyChanged();
//Notify that CB_3_Checked may have changed:
OnPropertyChanged("CB_3_Checked");
}
}
對CB1和CB2執行此操作。
添加本作CB3
//Will return 'true' when both are checked (but lacks OnPropertyChanged !)
public bool CB_3_Checked => (CB_1_Checked && CB_2_Checked);
或者多一點的選擇:
private bool _cb_3_checked;
public bool CB_3_Checked
{
get
{
if(CB_1_Checked && CB_2_Checked)
{
_cb_3_checked = true;
}
return _cb_3_checked;
}
set
{
_cb_3_checked = value;
OnPropertyChanged();
}
}
瞭解更多關於Bindings here.
相關問題
- 1. WPF - 複選框組合框 - 綁定IsSelected?
- 2. WPF綁定複選框到布爾?
- 3. WPF綁定複選框IsChecked到其他複選框(IsChecked ||!IsEnabled)
- 4. 複選框綁定
- 5. WPF綁定IsEnabled爲未綁定複選框?
- 6. WPF TreeView複選框綁定 - 如何使用複選框填充ViewModel
- 7. 綁定值複選框
- 8. 綁定複選框命令
- 9. 複選框數據綁定
- 10. 綁定複選框列表
- 11. 複選框數據綁定
- 12. 自定義複選框在WPF DataGrid不更新綁定
- 13. 綁定ischecked選擇wpf列表框中的複選框已更改組合框
- 14. WPF - 組合框的複雜綁定
- 15. WPF:與多選項綁定列表框
- 16. WPF如何設置複選框IsChecked在代碼後面綁定
- 17. 在列表視圖中的WPF複選框綁定
- 18. WPF DataGridTemplateColumn複選框元素IsChecked與轉換器TwoWay綁定
- 19. WPF - 複選框是否綁定到ObservableCollection是否包含值?
- 20. WPF多選列表框和複合項目源綁定
- 21. wpf複選框在列表視圖中綁定兩種方式
- 22. WPF DataGridCheckBoxColumn:如果綁定值爲null,如何隱藏複選框?
- 23. Silverlight/WPF多對多列表複選框綁定
- 24. 在數據綁定WPF樹狀發展複選框葉子
- 25. 綁定與複選框(全選)
- 26. Vue不確定複選框綁定
- 27. 複選框WPF MVVM
- 28. 複選框在WPF
- 29. WPF複選框multiBinding
- 30. WPF複選框排
提供代碼示例可以幫助我們爲您提供幫助。 –
顯示您現在如何處理(使用)'IsChecked'值。使用ViewModel中的MVVM很容易解決。 – Sinatr
您使用的是viewmodel嗎? –