TextBoxes
単一の にバインドされているものがいくつかありCheckBox
ます。
これに関連するロジックは次のとおりです。
- がチェックされている場合
Checkbox
、関連付けられている既存のテキストを上書きしTextBoxes
て '0' ++にします。 - すべての
TextBoxes
スコアが「0」のCheckBox
場合は、無効にしてオンにする必要があります。 - その後のいずれかが
TextBoxes
「0」から変化すると、有効になり、チェックが解除されます。
++ *注: * これに対する警告TextBox
は、 の値が「C」の場合です。
TextBoxes
さて、私が抱えている問題は、関連付けられているものの 1 つが「C」の値を持っている場合に、上記の警告を実装することです。私が望んでいるのは、 をループして、TextBoxes
「C」と評価されたものがあるかどうかを確認することです。見つかった場合は、続行するかどうかを確認する警告メッセージをユーザーに表示します。[はい] を選択すると、関連するすべてのスコアが「0」に上書きされます。いいえを選択した場合、Checked
イベントはキャンセルされます。
CheckBox.PreviewMouseDown
これを実現するために、およびイベントのイベント リスナーを追加しましたCheckBox.Checked
。これが私の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を手動で設定しようとしましif (msgResult == MessageBoxResult.Yes)
たが、これはバインディングを壊すため、実行可能な解決策ではありません。
NormalCheckBoxControl_Checked(object sender, RoutedEventArgs e)
ユーザーが [はい] を選択した場合、この問題を解決してイベントを続行する方法はありますか?