WPF: שגיאה באירוע selected בקומבו
-
בקומבו שהוזכר לעיל (לגבי האמצעי תשלום) כתבתי את אירוע שנועד לבדוק איזה סוג אמצעי נבחר, וע"פ זה להחליט איזה המשך של הטופס להציג למשתמש.
למשל, אם הוא בחר בכרטיס אשראי - הוא יתן לו להזין את פרטי הכרטיס, ואם מדובר בתרומה חד פעמית - יקפיץ לו מסך לחיוב מיידי באשראי.
אם הוא בוחר בהו"ק בנקאית - יתן לו בהמשך שדות להזנת פרטי הבנק, וכן על זה הדרך.
כתבתי זאת לאירוע selected של הקומבו, אך אני מקבל את השגיאה הבאה:
'ComboBox' does not contain a definition for 'Selected' and no extension method 'Selected' accepting a first argument of type 'ComboBox' could be found (are you missing a using directive or an assembly reference?)הקוד בזאמל הוא:
<ComboBox Width="120" x:Name="howToDonationCB" ItemsSource="{Binding Source={x:Static local:MainWindow.paymentMethod}, Mode=OneWay}" DisplayMemberPath="Value" SelectedValuePath="Key" SelectedValue="{Binding MethodPayment}" Selected="SelectedPaymentMethotComboBox_Selected" />
והקוד של האירוע הוא:
private void SelectedPaymentMethotComboBox_Selected(object sender, RoutedEventArgs e) { try { if (donation1.MethodPayment == 1) { if (disposableRB.IsChecked == false)//אם מדובר בתרומה קבועה { creditCardWP.Visibility = Visibility.Visible; bankAccountWP.Visibility = Visibility.Collapsed; } else//אם מדובר בתרומה חד פעמית {//פותח חלון לחיוב מיידי באשראי CreditCard.DebitRegular dr = new CreditCard.DebitRegular(); dr.ShowDialog(); } } else if (donation1.MethodPayment == 2) { creditCardWP.Visibility = Visibility.Collapsed; bankAccountWP.Visibility = Visibility.Visible; } else { creditCardWP.Visibility = Visibility.Collapsed; bankAccountWP.Visibility = Visibility.Collapsed; } } catch(Exception ex) { MessageBox.Show(ex.Message); } }
ולרחמים אם זה לא מתאים לMVVM זה בגלל שעדיין אינני יודע מה זה בדיוק :oops: :oops:
כלומר אני יודע שזה הפרדת הקוד מהתצוגה, אך לא יודע עדיין איך מממשים את זה..
בע"ה אני מתכנן ללמוד גם את זה בהמשך (בלנ"ד...)פורסם במקור בפורום CODE613 ב09/09/2015 20:35 (+03:00)
-
אין לך השלמה אוטומטית? אין בכלל מאפיין/אירוע בשם זה! האירוע נקרא: SelectionChanged. (בXAML כשאתה מקליד שם אירוע אז אחרי סימן השווה ההשלמה האוטומטית נותנת אופציה Create Method שיוצרת את בלוק הקוד לאירוע).
פורסם במקור בפורום CODE613 ב09/09/2015 20:41 (+03:00)
-
@דוד ל.ט.
אין לך השלמה אוטומטית? אין בכלל מאפיין/אירוע בשם זה! האירוע נקרא: SelectionChanged. (בXAML כשאתה מקליד שם אירוע אז אחרי סימן השווה ההשלמה האוטומטית נותנת אופציה Create Method שיוצרת את בלוק הקוד לאירוע).
לא הבנתי..
בהשלמה האוט' הוא נותן לי אירוע בשם selectet
ואז בחרתי שייצור אירוע חדש ושיניתי לו את השם לשם הזה...
מה לא טוב באירוע selected?
בכל אופן אנסה כמו שכתבת.. רק מעניין אותי לדעת כי לפני זה זה כן עבד לי (כשהזנתי את הערכים של הקומבו ישירות בזאמל... או שדווקא אז זה עבד כי כתבתי את הselected לכל item בנפרד?!?..)פורסם במקור בפורום CODE613 ב09/09/2015 20:45 (+03:00)
-
בהשלמה האוט' הוא נותן לי אירוע בשם selectet
אני בהלם. גם אצלי. באג לא ברור לי...
אני מחר אחרוש את העניין.כשהזנתי את הערכים של הקומבו ישירות בזאמל... או שדווקא אז זה עבד כי כתבתי את הselected לכל item בנפרד?!?..)
אכן. למחלקה ComboBoxItem אכן יש אירוע כזה.... אבל בשביל ללכוד את האירוע הזה בלי לכתוב את הערכים מפורש בXAML אתה חייב להשתמש בסטייל (לסוג ComboBoxItem) ושם להגדיר EventSetter.
פורסם במקור בפורום CODE613 ב09/09/2015 21:04 (+03:00)