我有幾個TextBoxes
綁定到單個CheckBox
。顯示一個MessageBox可以防止IsChecked射擊
這是與它相關的邏輯:
- 如果
Checkbox
被選中,將覆蓋在相關TextBoxes
任何現有文本,並使其「0」 ++ - 如果所有的
TextBoxes
得分爲'0',CheckBox
應該 被禁用和檢查。 - 如果
TextBoxes
中的任何一個從「0」變爲「0」,它將變爲啓用和未選中 。
++ * 注:*需要說明的是如果該TextBox
具有 'C.' 的值
好的,所以我遇到的問題是執行上面的警告時,其中一個相關的TextBoxes
具有'C.'值。我想要發生的是循環通過TextBoxes
並檢查是否有得分'C.'。如果找到一個,則向用戶顯示一條警告消息,確認是否要繼續。如果選擇是,則所有相關分數將被覆蓋爲'0'。如果選擇否,則應取消Checked
事件。
爲了達到這個目的,我爲CheckBox.PreviewMouseDown
和CheckBox.Checked
事件添加了Event Listeners。這裏是我的CheckBox.PreviewMouseDown
事件偵聽器的代碼:
private void NormalCheckBoxControl_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
CheckBox normalCheckBox = (CheckBox)sender;
bool showCorrespondingScoreWarningMsg = false;
//Get a Row to loop through the AssociatedAdqScore controls for each
ScoreControl tempScoreControl = new ScoreControl();
foreach (ScoreControl score in this.ScoreControlList)
{
if (score.ScoreTextBox.Text == "C")
{
showCorrespondingScoreWarningMsg = true;
}
}
if (showCorrespondingScoreWarningMsg)
{
MessageBoxResult msgResult = InformationBox.Show("WARNING: Proceeding will remove corresponding 'C' scores. Continue?", "Continue?", ButtonStyle.YesNo, IconStyle.Question);
if (msgResult == MessageBoxResult.No)
{
e.Handled = true;
}
}
}
這工作如果用戶選擇「否」,但我遇到的問題是,當選擇「是的,」 CheckBox.Checked
事件仍然沒有被解僱。我試圖手動設置CheckBox.IsChecked = true;
如果if (msgResult == MessageBoxResult.Yes)
,但這打破了綁定,所以這不是一個可行的解決方案。
如果用戶選擇「是?」,有什麼辦法可以解決此問題並繼續執行NormalCheckBoxControl_Checked(object sender, RoutedEventArgs e)
事件?
爲什麼不將'CheckBox'的'IsChecked'屬性綁定到一個屬性?這樣,當您將「CheckBox.IsChecked」綁定到屬性時,只需在「TextBox」條件匹配所需條件時更改屬性,並且在更改屬性時它會自動檢查/取消選中「CheckBox」 。 –