@pcinfogmach ההמלצה שלי לאפליקציה הבאה שלך (אם אתה נשאר במסגרת xaml) זה להשתמש עם AvaloniaUI + NativeAOT, החוויה די דומה ל WPF, ו - NativeAOT חוסך את הצורך ב .NET מותקן במחשב (ללא self contained), ועוד כמה דברים טובים.
קומפיונט
-
אפליקציית wpf מקומפלת ל־.NET Framework 4.7.2 לא עובדת על Windows 11 -
AI לתיכנות אופליין@מד אתה צודק, ollama יספיק לך, יש לו גם יותר מודלים שנתמכים.
-
AI לתיכנות אופליין@מד הייתי בכל זאת ממליץ לך לנסות את tabby, זכור לי שהוא גם מבוסס על ollama והוא מציע לך ממשק web נוח לצ'אט והשלמות אוטומטיות ב - vscode.
לא ברור לי איפה פגשת את 418, אני לא נתקלתי בזה. אולי זה קשור להורדה של מודלים מסויימים.
אם אתה רוצה לנסות תוריד את זה:
tabby_x86_64-windows-msvc-vulkan.zip -
AI לתיכנות אופלייןתנסה את TabbyML ניסיתי אותו בעבר ועושה את העבודה מצויין, לא חושב שזה יעבוד טוב בעברית.
רשימת מודלים נתמכים:
https://tabby.tabbyml.com/docs/models/ -
כיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#)@pcinfogmach אם אתה יכול לשנות את מבנה הקובץ, אז תשנה אותו כמו שכתב @OdedDvir שהמידע על ה - blobים יהיה בתחילת הקובץ (offset, length) ורק ה blobים עצמם יהיו מכווצים, לא כל הקובץ.
-
מדריך: איך לייצר לוקליזציה ב-wpf בצורה פשוטה וקלילה@pcinfogmach אתה יכול לקצר את זה כמו שאתה כותב
StaticResource,Bindingוכו, והשם של הקלאס הואStaticResourceExtension,BindingExtensionה - ConcurrentDictionary מיותר כי ממילא יש ל UI רק thread חוקי אחד, וכל האירועים שאתה מקבל כגון לחיצה על כפתור רצים על אותו thread ראשי.
-
מדריך: איך לייצר לוקליזציה ב-wpf בצורה פשוטה וקלילה@pcinfogmach אתה יכול לקצר את
loc:LocaleExtensionל -loc:Locale, הסיומת Extension לא נצרכת.
ואגב למה אתה משתמש ב - ConcurrentDictionary ולא ב - Dictionary רגיל? -
עורך קוד קל לתכנות, דומה לNPP++@מד כתב בתוסף חיפוש רגקס בוורד:
יש לZED איזה יתרון עליו?
ביצועים.
אם אתה רוצה לדעת עוד תחפש zed vs vscode -
מראה יותר אחיד ויפה לפקד ב-wpf@dovid כתב במראה יותר אחיד ויפה לפקד ב-wpf:
אתה יכול לשים רווח ביניהם. אני לא זוכר איך עושים כזה דבר בWPF.
אני לא בטוח שאני צודק, אבל אני חושב שאין כזה פנל ב-wpf.
(אבל אפשר לבנות פנל מותאם אישית) -
כיצד להגדיר GridColumns (עמודות) ו-GridRows (שורות) בקלות ב-wpf בהשראת Avaloniaאתה יכול להשתמש עם
GridLengthConverterprivate static GridLengthConverter _gridLengthConverter = new GridLengthConverter(); private static GridLength ParseGridLength(string value) { return _gridLengthConverter.ConvertFromString(value); }עוד משהו, מקובל להפריד עם עם רווח ולא רק פסיק.
ואגב אני חושב שזה הגיע מ - WinUI עוד לפני Avalonia
-
חוסר עקביות בין מה שמוצג בתצוגה מוקדמת ב-xaml ב-wpf לבין מה שקורה בפועל@pcinfogmach לבעיה עצמה אין לי פתרון, כנראה designer לא מושלם
מה שאתה יכול לעשות:
א) לקבוע את הגודל והמרחק לפי איך שזה נראה ב - word ולא לפי ה - designer.
ב) לעשות Grid עם חלוקה קבועה וככה זה יתחלק בצורה שווה גם אם הפונט ישתנה. -
רענון הרשימה של ה-combobox ב-wpf בכל פתיחה.@pcinfogmach כתב ברענון הרשימה של ה-combobox ב-wpf בכל פתיחה.:
רצה על ה-thread העיקרי
אם אתה מריץ את זה בצורה הבאה, זה רץ על thread נפרד:
var xml = await Task.Run(() => ActiveDocument.Content.WordOpenXML);כמדומני שקראתי בעבר שוורד לא באמת בנוי בצורה שתומכת threading
יתכן שהכוונה שהוא לא בטוח עם ריבוי threadים, אבל בהחלט אפשרי.
-
רענון הרשימה של ה-combobox ב-wpf בכל פתיחה.@pcinfogmach אפשר גם לעדכן רק על פי בקשת המשתמש, כלומר שאם הוא יפתח את רשימת הצבעים ויראה שאין את הצבע שהוא מחפש הוא ילחץ על כפתור ("רענן צבעים" לדוגמא) שיחלץ את הצבעים מחדש.
אפשרות נוספת:
כשהמשתמש פותח את הקומבו, להציג לו את הנתונים ששמורים במטמון מהפעם הקודמת, ובמקביל ב - Thread נפרד לחשב מחדש את הערכים, וכשהם מוכנים לשמור אותם למטמון ולעדכן את הקומבו הפתוח (אם הוא עדין פתוח). -
רענון הרשימה של ה-combobox ב-wpf בכל פתיחה.@pcinfogmach לכאורה התקיעה מתרחשת בזמן שאתה מאחזר את הצבעים מה xml, מה שעולה לי בראש זה:
א. להריץ את פעולות ה Regex ב - Thread נפרד (עם Task.Run), בתוספת מחוון קטן ב - UI שהתוכנה כעת חושבת ויש לחכות כמה שניות.
ב. לעשות אופטימיזציה לפעולה עצמה, לדוגמא שימוש בניתוח xml ולא regex (ב - #C עם LINQ זה די טריוויאלי). עוד אפשרות שעולה לי בראש, זה לעקוב ב - Thread נפרד אחרי השינויים של הקובץ (אם יש אירוע שכזה) ובכל פעם שהקובץ משנה לעדכן את רשימת הצבעים, עוד לפני שהמשתמש פותח את הקומבו בוקס. -
למה אסור להשתמש ברכבת בעל 256 זוגי גלגלים בשווייץ?@yossiz ומה יקרה אם יהיו 512 זוגות גלגלים? למה זה כן מותר?
-
אי אפשר להקליד תווים בעברית ב - visual studio@OdedDvir תודה! אבל לצערי זה לא פתר את הבעיה..
-
STT ונרמול דאטה@יהודי-טוב כתב בTTS ונרמול דאטה:
התמלול הזה מאוד דומה לתמלול של openAI (הגיוני שזה על מודול שלהם)
המודל של OpenAI נקרא whisper והפרויקט הנ"ל של העברית הוא גם whisper שעבר fine-tuning על הרבה נתונים בעברית.
אגב יצא לי לבדוק את whisper עם whisper.cpp (שזה זמן ריצה של whisper) והתוצאות היו ממש טובות, לסרטון אקראי של 10 דקות התמלול היה מצוין עם טעויות בודדות, אבל בגרסאות הקטנות יותר (מתחת ל - medium) התמלול היה על הפנים.
-
סקיצה איך ליישם Theming ב- wpf בצורה קלה ונוחה@pcinfogmach כתב בסקיצה איך ליישם Theming ב- wpf בצורה קלה ונוחה:
אם כבר אנחנו מדברים על spinoff של wpf מה אתה אומר על uno? לא ניסיתי את זה מעניין לשמוע ממישהו שכן ניסה אם יש?
לא התנסתי ב- uno, אבל נדמה לי שזה שילוב פלטפורמות קיימות של microsoft לבסיס אחד, זה לא באמת ממשק משתמש שנכתב מאפס, יש גם את maui. אני חושב ש - avalonia מתמקדת יותר בפיתוח desktop חוצה פלטפורמות, ופחות ל - mobile (כיום יש תמיכה רחבה גם ל - mobile אבל בעבר זו לא היה יציב)
סתם ככה היה לי הרגשה של "כמעט" כשהתעסקתי עם avalonia לא באתי ללכלך אבל מסקרן אותי כמה ההרגשה הזו אישית והאם יש בה ממש.
אני כיום מפתח עבור desktop רק עם avalonia בלי מחשבה לחזור אי פעם ל wpf.
-
שימוש נכון ב-await Task.Run ב-C#@dovid כתב בשימוש נכון ב-await Task.Run ב-C#:
ובCPU, צריך לעשות ממש דברים רציניים מאוד כדי שתהיה הצדקה לקפיאה.
באפליקציה קלאסית נתקלים בזה כשמריצים סינון על הרבה פריטים באמצעות תיבת חיפוש, ולפעמים ה - UI קופא לזמן קצר, במקרה הזה הפתרון להשתמש ב - Task.Run.
יש שני סיבות למה להשתמש בכלל בTask:
א. לומר לתוכנה שהיא לא צריכה הרגע לחכות לתוצאה, אלא לכשתגיע נדבר.
ב. לנצל את ריבוי המעבדים.הייתי מגדיר את זה טיפה שונה: המטרה העיקרית של Task ו - async/await היא לא לחסום את ה - thread הראשי. המושג הכללי multi-threading נועד גם בין היתר לנצל את ריבוי המעבדים.
-
מדריך: איך לייצר לוקליזציה ב-wpf בצורה פשוטה וקלילה@pcinfogmach כתב במדריך: איך לייצר לוקליזציה ב-wpf בצורה פשוטה וקלילה:
כשאתה בונה כמה פרוייקטים במקביל הפעולות המכניות הזוטרות האלה שחוזרים על עצמם שוב ושוב מתחילים להציק לך מאוד
הפתרון הוא לכתוב ספרייה משותפת שמאגדת את כל הבסיס לפרויקטים שלך, לדוגמא: classים בסיסיים של ViewModel (או reference לספריית MVVM כלשהיא), Localization, Theme, DI וכל מה שאתה משתמש
בכל פרויקט חדש אתה פשוט מוסיף reference לספרייה המשותפת (ואולי עוד כמה שורות קוד), וככה חסכת הרבה זמן בהקמה של הפרויקט