App xaml
-
יש אפשרות לגשת לאובייקט ב AppAxml מתוך האפליקציה?
אסביר את המטרה:
יצרתי בApp Xaml טמפלט בתוך סטייל לחלון שמכיל בורדר ובשלב מסוים באפליקציה כאשר אני נמצא בחלון שממש את הטמפלט הזה אני רוצה לשנות את מאפיין הבורדר ל isEnablפורסם במקור בפורום CODE613 ב13/05/2014 18:09 (+03:00)
-
ברור שאפשר.
אני מאמין גם שלך יצא כבר הרבה לגשת לResource (אין הבדל בין רמת החלון לרמת האפליקציה) ראה בסוף תשובתי כיצד.אבל אתה צריך לגשת לתת אלמנט של אלמנט חי, ולא למפלט שהיא התבנית לייצרו.
אתה צריך לעשות ככה:Window yourElement = this; //לא נראה לי שמדובר בחלון, אבל ככה אמרת Border yourBorder = (Border)yourElement.Template.FindName("aBorderNameOfTemplate", yourElement); yourBorder.IsEnabled = false;
בשורה הראשונה אני לוקח את האובייקט הקיים שרק בו אני רוצה לעשות שינוי באחד מאלמנטיו שנוצרו אוטומטית ע"י הטמפלט.
ע"י המתודה FindName של הטמפלט של אותו אובייקט אני מחפש את האלמנט Border לפי שמו שנתת לו (אם לא נתת, תן) בטמפלט.בשולי התשובה, לשאלה איך ניגשים לResource (כל מה שנמצא בXAML תחת האלמנט Resource של כל סוג אלמנט, החל בכפתור, חלון או אפליקציה - App.Xaml):
רמת חלון:
Style yourStyle = Application.Current.Resources as Style["keyName"];
רמת אפליקציה:
Style yourStyle = this.Resources as Style["keyName"];
במידה ואין לStyle שלנו Key כי הוא גלובלי, הקומפיילר למעשה כן נותן לו Key - הטיפוס עצמו. לדוגמה סטייל שהTargetType שלו הוא Button, ניגש אליו ככה:
Style yourStyle = Application.Current.Resources[typeof(Button)] as Style;
פורסם במקור בפורום CODE613 ב14/05/2014 11:18 (+03:00)