משיב מוביל
מיון של listbox לא מאופשר - sortdescription is not supported

שאלה
-
אני משתמשת ב visualstudio 2013 express
כשאני מנסה ליצור מיון לפקד list box אני נתקלת בהודעה הבאה:
sortdescription is not supported in wpf project
הנה הקוד:
<StackPanel.Resources> <CollectionViewSource x:Key="cvs" Source="{Binding CurrentWorker.WorkingDays}" > <CollectionViewSource.SortDescriptions > <SortDescription PropertyName="CityName"/> </CollectionViewSource.SortDescriptions> </CollectionViewSource> </StackPanel.Resources>
ראיתי שיש בעיה עם זה ב- vs2012 אך היא נפתרה ב- update 2 .
האם יתכן שחזרה שוב ?
- נערך על-ידי shi.mi יום שני 04 אוגוסט 2014 11:27
יום שני 04 אוגוסט 2014 11:26
תשובות
-
היי,
מאז ומתמיד היה צורך ב-WPF למפות את System.ComponentModel כדי לעבוד עם SortDescription ישירות מהזאמל.
עושים זאת כך:
<CollectionViewSource x:Key="cvs" xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase" Source="{Binding CurrentWorker.WorkingDays}" > <CollectionViewSource.SortDescriptions > <componentModel:SortDescription PropertyName="CityName"/> </CollectionViewSource.SortDescriptions> </CollectionViewSource>
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- נערך על-ידי תומר שמםModerator יום שני 11 אוגוסט 2014 06:48
- הוצע כתשובה על-ידי תומר שמםModerator יום שני 11 אוגוסט 2014 06:48
- סומן כתשובה על-ידי Eran Sharvit יום שני 11 אוגוסט 2014 09:58
יום שני 11 אוגוסט 2014 06:47מנחה דיון
כל התגובות
-
בקרוב מומחי הקהילה ינסו לסייע.
תודה.
מיקרוסופט מציעה שירות זה ללא תשלום, למטרת סיוע למשתמשים והעשרת הידע הקשור בטכנולוגיות ובמוצרים של מיקרוסופט. תוכן זה מתפרסם כפי שהוא והוא אינו מעיד על כל אחריות מצד מיקרוסופט.
יום חמישי 07 אוגוסט 2014 14:51 -
היי,
מאז ומתמיד היה צורך ב-WPF למפות את System.ComponentModel כדי לעבוד עם SortDescription ישירות מהזאמל.
עושים זאת כך:
<CollectionViewSource x:Key="cvs" xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase" Source="{Binding CurrentWorker.WorkingDays}" > <CollectionViewSource.SortDescriptions > <componentModel:SortDescription PropertyName="CityName"/> </CollectionViewSource.SortDescriptions> </CollectionViewSource>
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- נערך על-ידי תומר שמםModerator יום שני 11 אוגוסט 2014 06:48
- הוצע כתשובה על-ידי תומר שמםModerator יום שני 11 אוגוסט 2014 06:48
- סומן כתשובה על-ידי Eran Sharvit יום שני 11 אוגוסט 2014 09:58
יום שני 11 אוגוסט 2014 06:47מנחה דיון -
תודה,
באמת עכשיו הזאמל מקבל את זה, סוף סוף
אבל אולי אפשר קצת הסבר ? למה זה כך ? ומה גורם לכך שצריך למפות אמרחב השמות בתוך האלמנט ? זה משהן כמו extension method?
יום שני 11 אוגוסט 2014 13:28 -
שוב אני,
יחד עם זאת, זה עדין לא עובד.
הקוד שלי נראה כך :
<StackPanel.Resources><CollectionViewSource x:Key="cvs" Source="{Binding CurrentWorker.WorkingDays}" xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase" ><CollectionViewSource.SortDescriptions ><componentModel:SortDescription PropertyName="WeekDay" /></CollectionViewSource.SortDescriptions></CollectionViewSource></StackPanel.Resources>אבל בזמן ריצה אני מקבלת את השגיאה הבאה :
A first chance exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll
Additional information: 'System.Windows.Data.BindingListCollectionView' view does not support sorting.
If there is a handler for this exception, the program may be safely continued.זה קורה בפונקציה שמנסה להציג את הנתונים לראשונה.
יש לכם אולי כיוון לפתרון ?
יום שני 11 אוגוסט 2014 13:45 -
היי,
לגבי שאלתך הראשונה, משיקולים כאלו ואחרים, אנשי WPF החליטו שלא למפות טיפוסים שונים, כגון sortdescription למרחב השמות הראשי של WPF,
http://schemas.microsoft.com/winfx/2006/xaml/presentation
ולכן, טיפוסים שאינם ממופים, יש למפות ידנית כפי שציינתי.
אם תתקינו את תוסף ReSharper לויזואל סטודיו, הוא עושה עבודה מדהימה בנושא.
בנוגע לבעיית הריצה, binding ל- CollectionViewSource נעשה בצורה הבאה:
<StackPanel> <StackPanel.Resources> <CollectionViewSource xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase" x:Key="cvs" Source="{Binding CurrentWorker.WorkingDays}"> <CollectionViewSource.SortDescriptions > <componentModel:SortDescription PropertyName="WeekDay" /> </CollectionViewSource.SortDescriptions> </CollectionViewSource> </StackPanel.Resources> <ListBox ItemsSource="{Binding Source={StaticResource cvs}}" DisplayMemberPath="WeekDay" /> </StackPanel>
בנוסף, נראה שאת עושה שימוש ב-BindingListCollectionView. לא מומלץ! ולא תומך במייון. במקום תשתמשי ב- ObservableCollection<T>.
בברכה,
תומר שמם
CodeValue
- נערך על-ידי Tomer Shamam יום שני 11 אוגוסט 2014 18:34
- הוצע כתשובה על-ידי Tomer Shamam יום שני 11 אוגוסט 2014 18:34
- נערך על-ידי תומר שמםModerator יום שני 11 אוגוסט 2014 18:40 הוספת מידע
יום שני 11 אוגוסט 2014 18:32 -
הקוד של הליסט שלי נראה בדייוק כך :
<ComboBox ItemsSource="{Binding WorkersList}" SelectedItem="{Binding CurrentWorker}" IsEnabled="{Binding DataSaved}" ><ComboBox.ItemTemplate><DataTemplate>......</DataTemplate></ComboBox.ItemTemplate></ComboBox>ואני משתמשת ל- binding רק ב- observablecollections
אמנם האוסף אליו אני מקשרת עתה הוא entitycollection כי הוא בא ישירות מקשר גומלין של ה- EF(5
וכך יש לי את השגיאה.
אמנם חשבתי להעביר את הנתונים הללו ל-observablecollections אבל אז הוא יעתיק אותם והם לא יהיו משויכיםן ליישות האב שלהם יותר .
יום שני 11 אוגוסט 2014 20:21 -
entitycollection לא נתמך בעזרת collectionviewsource.
לצרכי הצגה, אין ברירה אלא להעתיק הצידה.
את יכולה לשמור 2 עותקים כדי לא לאבד קשרים.
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
יום רביעי 13 אוגוסט 2014 19:58מנחה דיון