バインドしているこのデータを並び替えて戻したいのですが、どうしたらいいですか?
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 }
はっきり言って何が何だかさっぱりわかりません。
MainWindowViewModelのコレクションがあるんですか?
ではWindow.DataContextは何になっているんでしょうか??
<vm:SearchKekka x:Key="kekka"/>
は、C#でいうと
var kekka = new SearchKekka();
のような意味ですから
提示コードの
public SearchKekka kekka;
とは全く別のインスタンスです。
元データを並び替えても別にかまいませんが、CollectionViewSourceを使うのが一般的かと思います。
> 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}}" ・・・
> 何が何だかさっぱりわかりません。
一部に勘違いがあったようです。困惑させてしまい申し訳ありません。
回答1件
あなたの回答
tips
プレビュー