• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

なろうブックマーク分析用ツールのPrism+WinUI3サンプル実装


Commit MetaInfo

修订版a4f2ab01ffea43b75bf3d2a65bd2b608b13b3c8f (tree)
时间2022-08-24 07:54:20
作者yoshy <yoshy.org.bitbucket@gz.j...>
Commiteryoshy

Log Message

[MOD] SortableSynchronizedCoupleView によるソート処理の実装(すべての列を移行)

更改概述

差异

--- a/TestNarou3.Adaptor/Boundary/Gateway/ViewModel/IBookmarkDetailListViewModel.cs
+++ b/TestNarou3.Adaptor/Boundary/Gateway/ViewModel/IBookmarkDetailListViewModel.cs
@@ -22,6 +22,7 @@ namespace TestNarou3.Adaptor.Boundary.Gateway.ViewModel
2222
2323 void SynchronizeWith(BookmarkDetailList list);
2424
25- void Sort(string tag, Func<IBookmarkDetailListRowViewModel, string> selector, bool asceding);
25+ void SortByValueColumn<TValueColumn>(string tag, Func<BookmarkDetailListRow, TValueColumn> selector, bool asceding);
26+ void SortByViewColumn<TViewColumn>(string tag, Func<IBookmarkDetailListRowViewModel, TViewColumn> selector, bool asceding);
2627 }
2728 }
--- a/TestNarou3.Adaptor/Gateway/ViewModel/BookmarkDetailListViewModel.cs
+++ b/TestNarou3.Adaptor/Gateway/ViewModel/BookmarkDetailListViewModel.cs
@@ -9,6 +9,7 @@ using System.Collections.ObjectModel;
99 using System.ComponentModel;
1010 using System.Diagnostics;
1111 using System.Reactive.Disposables;
12+using System.Windows.Input;
1213 using TestNarou3.Adaptor.Boundary.Controller;
1314 using TestNarou3.Adaptor.Boundary.Gateway.ViewModel;
1415 using TestNarou3.Adaptor.Boundary.Gateway.ViewModel.Child;
@@ -86,11 +87,10 @@ namespace TestNarou3.Adaptor.Gateway.ViewModel
8687
8788 public void SynchronizeWith(BookmarkDetailList source)
8889 {
89-#if true
9090 if (this.Source == null)
9191 {
9292 this.SortableRows = source.Rows
93- .ToSortableSynchronizedCoupleView(r => r.NCode, r => this.vmTranslator.Translate(r, this), new DetailListComparer(r => r.Title.Value, true));
93+ .ToSortableSynchronizedCoupleView(r => r.NCode, r => this.vmTranslator.Translate(r, this), new DetailListViewComparer<string>(r => r.Title.Value, true));
9494
9595 this.Rows = this.SortableRows
9696 .ToSynchronizedSingleView()
@@ -107,52 +107,80 @@ namespace TestNarou3.Adaptor.Gateway.ViewModel
107107 logger.Trace("BookmarkDetailListViewModel.SynchronizeWith: viewmodel already synchronized to model [{0}]",
108108 this.Source.ToHashString());
109109 }
110-#else
111- if (this.Rows != null)
110+ }
111+
112+ public void SortByViewColumn<TViewColumn>(string tag, Func<IBookmarkDetailListRowViewModel, TViewColumn> selector, bool ascending)
113+ {
114+ logger.Trace("Sort: {0}, ascending = {1}", tag, ascending);
115+ this.SortableRows.Sort(new DetailListViewComparer<TViewColumn>(selector, ascending));
116+ }
117+
118+ public void SortByValueColumn<TValueColumn>(string tag, Func<BookmarkDetailListRow, TValueColumn> selector, bool ascending)
119+ {
120+ logger.Trace("Sort: {0}, ascending = {1}", tag, ascending);
121+ this.SortableRows.Sort(new DetailListValueComparer<TValueColumn>(selector, ascending));
122+ }
123+
124+ internal class DetailListViewComparer<TViewColumn> : ViewComparer<string, BookmarkDetailListRow, IBookmarkDetailListRowViewModel, TViewColumn>
125+ {
126+ public DetailListViewComparer(
127+ Func<IBookmarkDetailListRowViewModel, TViewColumn> selector, bool ascending = true
128+ ) : base(selector, ascending)
112129 {
113- this.Rows.Dispose();
114- this.disposables.Remove(this.Rows);
115130 }
131+ }
116132
117- this.SortableRows = new FreezedList<BookmarkDetailListRow>(source.Rows)
118- .ToSynchronizedSortableCoupleView(r => this.vmTranslator.Translate(r, this),
119- new ViewComparer<IBookmarkDetailListRowViewModel, string>(r => r.Title.Value));
133+ internal class ViewComparer<TKey, T, TView, TViewColumn> : IComparer<(TKey, T, TView)>
134+ {
135+ readonly Func<TView, TViewColumn> selector;
136+ readonly int f;
120137
121- this.Rows = this.SortableRows
122- .ToSynchronizedSingleView()
123- .WithINotifyCollectionChangedList()
124- .AddTo(disposables);
138+ public ViewComparer(Func<TView, TViewColumn> selector, bool ascending = true)
139+ {
140+ this.selector = selector;
141+ this.f = ascending ? 1 : -1;
142+ }
125143
126- this.Source = source;
144+ public int Compare((TKey, T, TView) x, (TKey, T, TView) y)
145+ {
146+ int c = Comparer<TViewColumn>.Default.Compare(selector(x.Item3), selector(y.Item3)) * f;
147+
148+ if (c == 0)
149+ {
150+ c = Comparer<TKey>.Default.Compare(x.Item1, y.Item1) * f;
151+ }
127152
128- // PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Rows"));
129-#endif
153+ return c;
154+ }
130155 }
131156
132- public void Sort(string tag, Func<IBookmarkDetailListRowViewModel, string> selector, bool ascending)
157+ internal class DetailListValueComparer<TValueColumn> : ValueComparer<string, BookmarkDetailListRow, IBookmarkDetailListRowViewModel, TValueColumn>
133158 {
134- logger.Trace("Sort: {0}, ascending = {1}", tag, ascending);
135- this.SortableRows.Sort(new DetailListComparer(selector, ascending));
159+ public DetailListValueComparer(
160+ Func<BookmarkDetailListRow, TValueColumn> selector, bool ascending = true
161+ ) : base(selector, ascending)
162+ {
163+ }
136164 }
137165
138- internal class DetailListComparer : IComparer<(string, BookmarkDetailListRow, IBookmarkDetailListRowViewModel)>
166+ internal class ValueComparer<TKey, T, TView, TValueColumn> : IComparer<(TKey, T, TView)>
139167 {
140- readonly Func<IBookmarkDetailListRowViewModel, string> selector;
168+ readonly Func<T, TValueColumn> selector;
141169 readonly int f;
142170
143- public DetailListComparer(Func<IBookmarkDetailListRowViewModel, string> selector, bool ascending = true)
171+ public ValueComparer(Func<T, TValueColumn> selector, bool ascending = true)
144172 {
145173 this.selector = selector;
146174 this.f = ascending ? 1 : -1;
147175 }
148176
149- public int Compare((string, BookmarkDetailListRow, IBookmarkDetailListRowViewModel) x, (string, BookmarkDetailListRow, IBookmarkDetailListRowViewModel) y)
177+ public int Compare((TKey, T, TView) x, (TKey, T, TView) y)
150178 {
151- int c = selector(x.Item3).CompareTo(selector(y.Item3)) * f;
179+ int c = Comparer<TValueColumn>.Default.Compare(selector(x.Item2), selector(y.Item2)) * f;
152180
153181 if (c == 0)
154182 {
155- c = x.Item1.CompareTo(y.Item1);
183+ c = Comparer<TKey>.Default.Compare(x.Item1, y.Item1) * f;
156184 }
157185
158186 return c;
@@ -191,6 +219,5 @@ namespace TestNarou3.Adaptor.Gateway.ViewModel
191219 }
192220
193221 #endregion
194-
195222 }
196223 }
--- a/TestNarou3.OuterEdge/UI/View/BookmarkDetailListView.xaml
+++ b/TestNarou3.OuterEdge/UI/View/BookmarkDetailListView.xaml
@@ -58,7 +58,7 @@
5858 </DataTemplate>
5959 </ctc:DataGridTemplateColumn.CellTemplate>
6060 </ctc:DataGridTemplateColumn>
61- <ctc:DataGridTemplateColumn Header="タイトル" Width="300" CanUserSort="False">
61+ <ctc:DataGridTemplateColumn Header="タイトル" Width="300" Tag="Title">
6262 <ctc:DataGridTemplateColumn.CellTemplate>
6363 <DataTemplate x:DataType="vm:IBookmarkDetailListRowViewModel">
6464 <Grid VerticalAlignment="Center">
--- a/TestNarou3.OuterEdge/UI/View/BookmarkDetailListView.xaml.cs
+++ b/TestNarou3.OuterEdge/UI/View/BookmarkDetailListView.xaml.cs
@@ -46,19 +46,28 @@ namespace TestNarou3.OuterEdge.UI.View
4646
4747 switch (tag)
4848 {
49+ case "Title":
50+ if ((e.Column.SortDirection == null) || (direction == DataGridSortDirection.Descending))
51+ {
52+ this.ViewModel.SortByViewColumn(tag, r => r.Title.Value, true);
53+ e.Column.SortDirection = DataGridSortDirection.Ascending;
54+ }
55+ else
56+ {
57+ this.ViewModel.SortByViewColumn(tag, r => r.Title.Value, false);
58+ e.Column.SortDirection = DataGridSortDirection.Descending;
59+ }
60+ break;
61+
4962 case "Writer":
5063 if ((e.Column.SortDirection == null) || (direction == DataGridSortDirection.Descending))
5164 {
52- //dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
53- // from item in ViewModel.Rows orderby item.Writer.Value ascending select item);
54- this.ViewModel.Sort(tag, r => r.Writer.Value, true);
65+ this.ViewModel.SortByViewColumn(tag, r => r.Writer.Value, true);
5566 e.Column.SortDirection = DataGridSortDirection.Ascending;
5667 }
5768 else
5869 {
59- //dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
60- // from item in ViewModel.Rows orderby item.Writer.Value descending select item);
61- this.ViewModel.Sort(tag, r => r.Writer.Value, false);
70+ this.ViewModel.SortByViewColumn(tag, r => r.Writer.Value, false);
6271 e.Column.SortDirection = DataGridSortDirection.Descending;
6372 }
6473 break;
@@ -66,14 +75,12 @@ namespace TestNarou3.OuterEdge.UI.View
6675 case "End":
6776 if (direction == DataGridSortDirection.Ascending)
6877 {
69- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
70- from item in ViewModel.Rows orderby item.End.Value descending select item);
78+ this.ViewModel.SortByViewColumn(tag, r => r.End.Value, false);
7179 e.Column.SortDirection = DataGridSortDirection.Descending;
7280 }
7381 else
7482 {
75- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
76- from item in ViewModel.Rows orderby item.End.Value ascending select item);
83+ this.ViewModel.SortByViewColumn(tag, r => r.End.Value, true);
7784 e.Column.SortDirection = DataGridSortDirection.Ascending;
7885 }
7986 break;
@@ -81,14 +88,12 @@ namespace TestNarou3.OuterEdge.UI.View
8188 case "GeneralAllNo":
8289 if (direction == DataGridSortDirection.Ascending)
8390 {
84- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
85- from item in ViewModel.Rows orderby item.GeneralAllNo.Value descending select item);
91+ this.ViewModel.SortByViewColumn(tag, r => r.GeneralAllNo.Value, false);
8692 e.Column.SortDirection = DataGridSortDirection.Descending;
8793 }
8894 else
8995 {
90- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
91- from item in ViewModel.Rows orderby item.GeneralAllNo.Value ascending select item);
96+ this.ViewModel.SortByViewColumn(tag, r => r.GeneralAllNo.Value, true);
9297 e.Column.SortDirection = DataGridSortDirection.Ascending;
9398 }
9499 break;
@@ -96,14 +101,12 @@ namespace TestNarou3.OuterEdge.UI.View
96101 case "Time":
97102 if (direction == DataGridSortDirection.Ascending)
98103 {
99- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
100- from item in ViewModel.Rows orderby item.Time.Value descending select item);
104+ this.ViewModel.SortByViewColumn(tag, r => r.Time.Value, false);
101105 e.Column.SortDirection = DataGridSortDirection.Descending;
102106 }
103107 else
104108 {
105- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
106- from item in ViewModel.Rows orderby item.Time.Value ascending select item);
109+ this.ViewModel.SortByViewColumn(tag, r => r.Time.Value, true);
107110 e.Column.SortDirection = DataGridSortDirection.Ascending;
108111 }
109112 break;
@@ -111,14 +114,12 @@ namespace TestNarou3.OuterEdge.UI.View
111114 case "IsStop":
112115 if ((e.Column.SortDirection == null) || (direction == DataGridSortDirection.Descending))
113116 {
114- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
115- from item in ViewModel.Rows orderby item.IsStop.Value ascending select item);
117+ this.ViewModel.SortByViewColumn(tag, r => r.IsStop.Value, true);
116118 e.Column.SortDirection = DataGridSortDirection.Ascending;
117119 }
118120 else
119121 {
120- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
121- from item in ViewModel.Rows orderby item.IsStop.Value descending select item);
122+ this.ViewModel.SortByViewColumn(tag, r => r.IsStop.Value, false);
122123 e.Column.SortDirection = DataGridSortDirection.Descending;
123124 }
124125 break;
@@ -126,14 +127,12 @@ namespace TestNarou3.OuterEdge.UI.View
126127 case "GlobalPoint":
127128 if (direction == DataGridSortDirection.Ascending)
128129 {
129- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
130- from item in ViewModel.Rows orderby item.GlobalPoint.Value descending select item);
130+ this.ViewModel.SortByViewColumn(tag, r => r.GlobalPoint.Value, false);
131131 e.Column.SortDirection = DataGridSortDirection.Descending;
132132 }
133133 else
134134 {
135- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
136- from item in ViewModel.Rows orderby item.GlobalPoint.Value ascending select item);
135+ this.ViewModel.SortByViewColumn(tag, r => r.GlobalPoint.Value, true);
137136 e.Column.SortDirection = DataGridSortDirection.Ascending;
138137 }
139138 break;
@@ -141,14 +140,12 @@ namespace TestNarou3.OuterEdge.UI.View
141140 case "PointPerMin":
142141 if (direction == DataGridSortDirection.Ascending)
143142 {
144- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
145- from item in ViewModel.Rows orderby item.PointPerMin.Value descending select item);
143+ this.ViewModel.SortByViewColumn(tag, r => r.PointPerMin.Value, false);
146144 e.Column.SortDirection = DataGridSortDirection.Descending;
147145 }
148146 else
149147 {
150- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
151- from item in ViewModel.Rows orderby item.PointPerMin.Value ascending select item);
148+ this.ViewModel.SortByViewColumn(tag, r => r.PointPerMin.Value, true);
152149 e.Column.SortDirection = DataGridSortDirection.Ascending;
153150 }
154151 break;
@@ -156,14 +153,12 @@ namespace TestNarou3.OuterEdge.UI.View
156153 case "DailyPoint":
157154 if (direction == DataGridSortDirection.Ascending)
158155 {
159- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
160- from item in ViewModel.Rows orderby item.DailyPoint.Value descending select item);
156+ this.ViewModel.SortByViewColumn(tag, r => r.DailyPoint.Value, false);
161157 e.Column.SortDirection = DataGridSortDirection.Descending;
162158 }
163159 else
164160 {
165- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
166- from item in ViewModel.Rows orderby item.DailyPoint.Value ascending select item);
161+ this.ViewModel.SortByViewColumn(tag, r => r.DailyPoint.Value, true);
167162 e.Column.SortDirection = DataGridSortDirection.Ascending;
168163 }
169164 break;
@@ -171,14 +166,12 @@ namespace TestNarou3.OuterEdge.UI.View
171166 case "WeeklyPoint":
172167 if (direction == DataGridSortDirection.Ascending)
173168 {
174- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
175- from item in ViewModel.Rows orderby item.WeeklyPoint.Value descending select item);
169+ this.ViewModel.SortByViewColumn(tag, r => r.WeeklyPoint.Value, false);
176170 e.Column.SortDirection = DataGridSortDirection.Descending;
177171 }
178172 else
179173 {
180- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
181- from item in ViewModel.Rows orderby item.WeeklyPoint.Value ascending select item);
174+ this.ViewModel.SortByViewColumn(tag, r => r.WeeklyPoint.Value, true);
182175 e.Column.SortDirection = DataGridSortDirection.Ascending;
183176 }
184177 break;
@@ -186,14 +179,12 @@ namespace TestNarou3.OuterEdge.UI.View
186179 case "MonthlyPoint":
187180 if (direction == DataGridSortDirection.Ascending)
188181 {
189- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
190- from item in ViewModel.Rows orderby item.MonthlyPoint.Value descending select item);
182+ this.ViewModel.SortByViewColumn(tag, r => r.MonthlyPoint.Value, false);
191183 e.Column.SortDirection = DataGridSortDirection.Descending;
192184 }
193185 else
194186 {
195- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
196- from item in ViewModel.Rows orderby item.MonthlyPoint.Value ascending select item);
187+ this.ViewModel.SortByViewColumn(tag, r => r.MonthlyPoint.Value, true);
197188 e.Column.SortDirection = DataGridSortDirection.Ascending;
198189 }
199190 break;
@@ -201,14 +192,12 @@ namespace TestNarou3.OuterEdge.UI.View
201192 case "QuarterPoint":
202193 if (direction == DataGridSortDirection.Ascending)
203194 {
204- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
205- from item in ViewModel.Rows orderby item.QuarterPoint.Value descending select item);
195+ this.ViewModel.SortByViewColumn(tag, r => r.QuarterPoint.Value, false);
206196 e.Column.SortDirection = DataGridSortDirection.Descending;
207197 }
208198 else
209199 {
210- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
211- from item in ViewModel.Rows orderby item.QuarterPoint.Value ascending select item);
200+ this.ViewModel.SortByViewColumn(tag, r => r.QuarterPoint.Value, true);
212201 e.Column.SortDirection = DataGridSortDirection.Ascending;
213202 }
214203 break;
@@ -216,14 +205,12 @@ namespace TestNarou3.OuterEdge.UI.View
216205 case "YearlyPoint":
217206 if (direction == DataGridSortDirection.Ascending)
218207 {
219- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
220- from item in ViewModel.Rows orderby item.YearlyPoint.Value descending select item);
208+ this.ViewModel.SortByViewColumn(tag, r => r.YearlyPoint.Value, false);
221209 e.Column.SortDirection = DataGridSortDirection.Descending;
222210 }
223211 else
224212 {
225- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
226- from item in ViewModel.Rows orderby item.YearlyPoint.Value ascending select item);
213+ this.ViewModel.SortByViewColumn(tag, r => r.YearlyPoint.Value, true);
227214 e.Column.SortDirection = DataGridSortDirection.Ascending;
228215 }
229216 break;
@@ -231,14 +218,12 @@ namespace TestNarou3.OuterEdge.UI.View
231218 case "FavNovelCnt":
232219 if (direction == DataGridSortDirection.Ascending)
233220 {
234- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
235- from item in ViewModel.Rows orderby item.FavNovelCnt.Value descending select item);
221+ this.ViewModel.SortByViewColumn(tag, r => r.FavNovelCnt.Value, false);
236222 e.Column.SortDirection = DataGridSortDirection.Descending;
237223 }
238224 else
239225 {
240- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
241- from item in ViewModel.Rows orderby item.FavNovelCnt.Value ascending select item);
226+ this.ViewModel.SortByViewColumn(tag, r => r.FavNovelCnt.Value, true);
242227 e.Column.SortDirection = DataGridSortDirection.Ascending;
243228 }
244229 break;
@@ -246,14 +231,12 @@ namespace TestNarou3.OuterEdge.UI.View
246231 case "ImpressionCnt":
247232 if (direction == DataGridSortDirection.Ascending)
248233 {
249- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
250- from item in ViewModel.Rows orderby item.ImpressionCnt.Value descending select item);
234+ this.ViewModel.SortByViewColumn(tag, r => r.ImpressionCnt.Value, false);
251235 e.Column.SortDirection = DataGridSortDirection.Descending;
252236 }
253237 else
254238 {
255- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
256- from item in ViewModel.Rows orderby item.ImpressionCnt.Value ascending select item);
239+ this.ViewModel.SortByViewColumn(tag, r => r.ImpressionCnt.Value, true);
257240 e.Column.SortDirection = DataGridSortDirection.Ascending;
258241 }
259242 break;
@@ -261,14 +244,12 @@ namespace TestNarou3.OuterEdge.UI.View
261244 case "ReviewCnt":
262245 if (direction == DataGridSortDirection.Ascending)
263246 {
264- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
265- from item in ViewModel.Rows orderby item.ReviewCnt.Value descending select item);
247+ this.ViewModel.SortByViewColumn(tag, r => r.ReviewCnt.Value, false);
266248 e.Column.SortDirection = DataGridSortDirection.Descending;
267249 }
268250 else
269251 {
270- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
271- from item in ViewModel.Rows orderby item.ReviewCnt.Value ascending select item);
252+ this.ViewModel.SortByViewColumn(tag, r => r.ReviewCnt.Value, true);
272253 e.Column.SortDirection = DataGridSortDirection.Ascending;
273254 }
274255 break;
@@ -276,14 +257,12 @@ namespace TestNarou3.OuterEdge.UI.View
276257 case "AllPoint":
277258 if (direction == DataGridSortDirection.Ascending)
278259 {
279- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
280- from item in ViewModel.Rows orderby item.AllPoint.Value descending select item);
281- e.Column.SortDirection = DataGridSortDirection.Descending;
260+ this.ViewModel.SortByViewColumn(tag, r => r.AllPoint.Value, false);
261+ e.Column.SortDirection = DataGridSortDirection.Descending;
282262 }
283263 else
284264 {
285- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
286- from item in ViewModel.Rows orderby item.AllPoint.Value ascending select item);
265+ this.ViewModel.SortByViewColumn(tag, r => r.AllPoint.Value, true);
287266 e.Column.SortDirection = DataGridSortDirection.Ascending;
288267 }
289268 break;
@@ -291,14 +270,12 @@ namespace TestNarou3.OuterEdge.UI.View
291270 case "AllHyokaCnt":
292271 if (direction == DataGridSortDirection.Ascending)
293272 {
294- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
295- from item in ViewModel.Rows orderby item.AllHyokaCnt.Value descending select item);
273+ this.ViewModel.SortByViewColumn(tag, r => r.AllHyokaCnt.Value, false);
296274 e.Column.SortDirection = DataGridSortDirection.Descending;
297275 }
298276 else
299277 {
300- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
301- from item in ViewModel.Rows orderby item.AllHyokaCnt.Value ascending select item);
278+ this.ViewModel.SortByViewColumn(tag, r => r.AllHyokaCnt.Value, true);
302279 e.Column.SortDirection = DataGridSortDirection.Ascending;
303280 }
304281 break;
@@ -306,14 +283,12 @@ namespace TestNarou3.OuterEdge.UI.View
306283 case "GeneralLastUp":
307284 if (direction == DataGridSortDirection.Ascending)
308285 {
309- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
310- from item in ViewModel.Rows orderby item.GeneralLastUp.Value descending select item);
286+ this.ViewModel.SortByValueColumn(tag, r => r.GeneralLastUp.Value, false);
311287 e.Column.SortDirection = DataGridSortDirection.Descending;
312288 }
313289 else
314290 {
315- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
316- from item in ViewModel.Rows orderby item.GeneralLastUp.Value ascending select item);
291+ this.ViewModel.SortByValueColumn(tag, r => r.GeneralLastUp.Value, true);
317292 e.Column.SortDirection = DataGridSortDirection.Ascending;
318293 }
319294 break;
@@ -321,14 +296,12 @@ namespace TestNarou3.OuterEdge.UI.View
321296 case "GeneralFirstUp":
322297 if (direction == DataGridSortDirection.Ascending)
323298 {
324- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
325- from item in ViewModel.Rows orderby item.GeneralFirstUp.Value descending select item);
299+ this.ViewModel.SortByValueColumn(tag, r => r.GeneralFirstUp.Value, false);
326300 e.Column.SortDirection = DataGridSortDirection.Descending;
327301 }
328302 else
329303 {
330- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
331- from item in ViewModel.Rows orderby item.GeneralFirstUp.Value ascending select item);
304+ this.ViewModel.SortByValueColumn(tag, r => r.GeneralFirstUp.Value, true);
332305 e.Column.SortDirection = DataGridSortDirection.Ascending;
333306 }
334307 break;
@@ -336,14 +309,12 @@ namespace TestNarou3.OuterEdge.UI.View
336309 case "NovelUpdatedAt":
337310 if (direction == DataGridSortDirection.Ascending)
338311 {
339- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
340- from item in ViewModel.Rows orderby item.NovelUpdatedAt.Value descending select item);
312+ this.ViewModel.SortByValueColumn(tag, r => r.NovelUpdatedAt.Value, false);
341313 e.Column.SortDirection = DataGridSortDirection.Descending;
342314 }
343315 else
344316 {
345- dg.ItemsSource = new ObservableCollection<IBookmarkDetailListRowViewModel>(
346- from item in ViewModel.Rows orderby item.NovelUpdatedAt.Value ascending select item);
317+ this.ViewModel.SortByValueColumn(tag, r => r.NovelUpdatedAt.Value, true);
347318 e.Column.SortDirection = DataGridSortDirection.Ascending;
348319 }
349320 break;