質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1763閲覧

Model 側で取得したデータをソートしたい

byori

総合スコア71

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2021/03/02 04:03

バインドしているこのデータを並び替えて戻したいのですが、どうしたらいいですか?

kekka.Add(new MainWindowViewModel()
{
});

kekka.OrderBy(x => x.KekkaHyohon);
で並び変わるようですが、この値がうまくバインドできません。教えてください。
VS2015 C# WPF Windows10

Xaml

1 <Window.Resources> 2 <vm:SearchKekka x:Key="kekka"/> 3 </Window.Resources> 4 5 : 6 <DataGrid ItemsSource="{Binding Source={StaticResource kekka}}" AutoGenerateColumns="False" Margin="0,0,2,0" FontSize="14" 7 ScrollViewer.VerticalScrollBarVisibility="Auto" PreviewMouseWheel="DataGrid_PreviewMouseWheel" 8 Grid.Row="5" Grid.Column="1" Grid.ColumnSpan="12" Name="dataGrid1"> 9 10 <DataGrid.Columns> 11 <DataGridTextColumn Header="標本番号" Binding="{Binding KekkaHyohon}"/> 12 <DataGridTextColumn Header="委託元ID" Binding="{Binding KekkaItakID}"/> 13 :

C#

1 public class SearchKekka : ObservableCollection<MainWindowViewModel> 2 { 3 4 } 5 6 7 public class MainWindowViewModel : ViewModel, INotifyPropertyChanged 8 { 9 // 検索結果を返す 10 public SearchKekka kekka; 11 12 13 public void SearchKekka() 14 { 15 : 16 kekka.Add(new MainWindowViewModel() 17 { 18 KekkaHyohon = dataRow[0].ToString(), // 数字 19 KekkaItakID = dataRow[1].ToString(), 20 21 : 22 }); 23 } 24 25 26 27 28 public string KekkaHyohon 29 { 30 get { return _kekka._hyohon; } 31 set 32 { 33 if (value != _kekka._hyohon) 34 { 35 _kekka._hyohon = value; 36 NotifyPropertyChanged("KekkaHyohon"); 37 } 38 } 39 } 40 public string KekkaItakID 41 { 42 get { return _kekka._itakID; } 43 set 44 { 45 if (value != _kekka._itakID) 46 { 47 _kekka._itakID = value; 48 NotifyPropertyChanged("KekkaItakID"); 49 } 50 } 51 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2021/03/02 09:47

はっきり言って何が何だかさっぱりわかりません。 MainWindowViewModelのコレクションがあるんですか? ではWindow.DataContextは何になっているんでしょうか?? <vm:SearchKekka x:Key="kekka"/> は、C#でいうと var kekka = new SearchKekka(); のような意味ですから 提示コードの public SearchKekka kekka; とは全く別のインスタンスです。 元データを並び替えても別にかまいませんが、CollectionViewSourceを使うのが一般的かと思います。
byori

2021/03/03 00:27

> CollectionViewSourceを使うのが一般的かと思います。 これが一般的なのですね。知りませんでした。下記で希望通りになりました。 ありがとうございます。 <Window.Resources> <vm:SearchKekka x:Key="kekka"/> <!-- kekka の戻り値を並び替える --> <CollectionViewSource Source="{StaticResource kekka}" x:Key="cvs"> <CollectionViewSource.SortDescriptions> <scm:SortDescription PropertyName="KekkaHyohon"/> </CollectionViewSource.SortDescriptions> <!-- <CollectionViewSource.GroupDescriptions> <dat:PropertyGroupDescription PropertyName="State"/> </CollectionViewSource.GroupDescriptions> --> </CollectionViewSource> <DataGrid ItemsSource="{Binding Source={StaticResource cvs}}" ・・・ > 何が何だかさっぱりわかりません。 一部に勘違いがあったようです。困惑させてしまい申し訳ありません。
guest

回答1

0

自己解決

自己解決ではありませんが、TN8001 様のおかげで下記の通りで解決しました。

<Window.Resources> <vm:SearchKekka x:Key="kekka"/> <!-- kekka の戻り値を並び替える --> <CollectionViewSource Source="{StaticResource kekka}" x:Key="cvs"> <CollectionViewSource.SortDescriptions> <scm:SortDescription PropertyName="KekkaHyohon"/> </CollectionViewSource.SortDescriptions> <!-- <CollectionViewSource.GroupDescriptions> <dat:PropertyGroupDescription PropertyName="State"/> </CollectionViewSource.GroupDescriptions> --> </CollectionViewSource> <DataGrid ItemsSource="{Binding Source={StaticResource cvs}}" ・・・ <DataGrid.Columns> <DataGridTextColumn Header="標本番号" Binding="{Binding KekkaHyohon}"/>     :

投稿2021/03/03 00:30

byori

総合スコア71

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問