WPF למה הבינדינג לא מעדכן כשהמקור משתנה
-
עשיתי תפריט שה MenuItems שלו באים מה טאב-איטמס של טאב-קונטרול על ידי בינדינג וקונוורטר, ובאמת כל הטאב-איטמס שנוצרים בהתחלה מופיעים כנגדם MenuItems בתפריט, אבל אם אני מוסיף או מוחק טאב-אייטם אחד זה לא מתעדכן דרך הבינדינג ובתפריט כלום לא זז, מדוע הבינדיג לא מעדכן?
<Menu Name="Menu1" VerticalAlignment="Stretch" Grid.Column="1" VerticalContentAlignment="Center" > <Menu.Resources> <my:TabItemsConverter x:Key="TabItemsConverter1" /> </Menu.Resources> <MenuItem Click="MenuItem1_Click" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=TabControl, AncestorLevel=1}, Path=Items, Converter={StaticResource TabItemsConverter1}}" Name="MenuItem1" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Center" HorizontalContentAlignment="Center"> </MenuItem> </Menu>
פורסם במקור בפורום CODE613 ב03/01/2014 08:54 (+02:00)
-
(להבא, אנא, חסוך מהקוד כל קטע לא רלוונטי).
הבעיה פשוטה, אתה עושה קונוורטר ברמת האוסף, ולכן אתה נותן לItemsSource אוסף חדש ע"י הקונוורטר, והוא עוקב אך ורק אחריו.
תעשה המרה במרת פריט.כמה הערות:
- אתה לא צריך שום קונוורטר, כי אתה יכול לקחת ישר את הHeader של כל טאב, בדיוק כמו הטאב עצמם.
- אתה לא צריך אירוע לחיצה על פריט, אלא בינדינג בין האינדקס הנבחר של הקומבו לבין האינדקס הנבחר של הTabControl.
פורסם במקור בפורום CODE613 ב05/01/2014 13:10 (+02:00)
-
תודה רבה,
באמת לא שמתי לב שבעצם אני מגיש לבינדינג אוסף חדש.@דוד ל.ט.
- אתה לא צריך שום קונוורטר, כי אתה יכול לקחת ישר את הHeader של כל טאב, בדיוק כמו הטאב עצמם.
זה מה שעשיתי בהתחלה, אבל אז בארוע לחיצה על שורה בתפריט לא יכולתי לדעת באיזו שורה מדובר, כלומר לא יכולתי להגיע לאינדקס של השורה, ולכן הכנסתי לתפריט אוסף של 'שורות תפריט' ולא סתם אוסף של מחרוזות.
@דוד ל.ט.
- אתה לא צריך אירוע לחיצה על פריט, אלא בינדינג בין האינדקס הנבחר של הקומבו לבין האינדקס הנבחר של הTabControl.
אבל אין פה קומבו אלא תפריט עם שורות?
פורסם במקור בפורום CODE613 ב05/01/2014 13:38 (+02:00)
-
אולי קומבו זה טוב, אבל אני רוצה לעשות כמו ב VS שיש בצד ימין חץ קטן שמוציא תפריט ובכל שורה יש גם אייקון קטן ולזה מתאים תפריט.
@דוד ל.ט.
אתה צריך לאגד את כל האייטם ולהציב דטה טמפלט שימשוך את הHeader.
מה הכוונה? אולי יש דוגמא?
תודה רבה.פורסם במקור בפורום CODE613 ב05/01/2014 14:27 (+02:00)