コードビハインドで動的にWPF要素を作成しています。作成している行ごとに、と動的な数でGrid
構成されています。必要な相互作用は次のとおりです。CheckBox
TextBoxes
- 行のすべて
TextBoxes
の値が。の場合は、プロパティを0
に設定して無効にします。CheckBox
IsChecked
true
- のいずれかが
TextBoxes
から変更された場合は0
、を有効にしてCheckBox
をに設定IsChecked
しfalse
ます。 - ユーザーがをクリックした場合は、
CheckBox
に関連付けられているすべてを設定TextBoxes
し0
、を無効にしますCheckBox
私はこのコードを使用して最後の部分の最初の部分を達成することができました:
Binding setScoreToZeroIfIsNormalChecked = new Binding("IsChecked");
setScoreToZeroIfIsNormalChecked.Source = this.NormalCheckBoxControl;
setScoreToZeroIfIsNormalChecked.Converter = m_NormalCheckBoxJointScoresConverter;
tempJointScoreControl.JointScoreContainer.SetBinding(ContainerBase.SingleAnswerProperty, setScoreToZeroIfIsNormalChecked);
およびコンバーター:
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is bool && targetType == typeof(Answer))
{
if ((bool)value)
{
Answer answer = new Answer();
answer.Value = "0";
answer.DisplayValue = "0";
return answer;
}
else
return null;
}
else
{
return null;
}
}
ただし、他の機能を実現するために別のコンバーターを作成しようとすると、すべての機能がCheckBox.IsChecked
プロパティに基づいているため、コンバーターが相互にステップするという問題が発生していました。
1つまたは2つのマルチバインディングコンバーターを使用して上記のすべてを達成する方法はありますか?これを行うために、たくさんのイベントを作成して維持する必要はありません。