
WPFアプリケーションをMVVMパターンで作っています。
ListViewのカラムを動的に追加したく色々試しているのですが、上手くいっておりません。
Xaml
1//View 2 <Button Content="追加する" HorizontalAlignment="Left" Height="76" Margin="72,192,0,0" VerticalAlignment="Top" Width="135" Click="OnClickAdd"/> 3 4 <ListView Margin="221,113,30,78" ItemsSource="{Binding ListSource}"> 5 <ListView.View> 6 <GridView> 7 <GridViewColumn Header="{Binding HeaderName}" Width="70" DisplayMemberBinding="{Binding Item}" /> 8 </GridView> 9 </ListView.View> 10 </ListView>
C#
1//コードビハインド 2 public MainWindow() 3 { 4 InitializeComponent(); 5 mMainViewModel = new MainViewModel(); 6 this.DataContext = mMainViewModel; 7 8 ColumnItem columnItem = new ColumnItem(); 9 columnItem.HeaderName = DateTime.Now.Second.ToString(); 10 columnItem.Item = "Item"; 11 12 mMainViewModel.ListSource.Add(columnItem); 13 } 14 15 private void OnClickAdd(object sender, RoutedEventArgs e) 16 { 17 var array = mMainViewModel.ListSource; 18 19 ColumnItem columnItem = new ColumnItem(); 20 columnItem.HeaderName = DateTime.Now.Second.ToString(); 21 columnItem.Item = "Item"; 22 23 array.Add(columnItem); 24 25 mMainViewModel.ListSource = array; 26 }
C#
1//ViewModel 2 private ObservableCollection<ColumnItem> listSourceValue = new ObservableCollection<ColumnItem>(); 3 public ObservableCollection<ColumnItem> ListSource 4 { 5 get 6 { 7 return listSourceValue; 8 } 9 set 10 { 11 listSourceValue = value; 12 NotifyPropertyChanged("ListSource"); 13 } 14 }
サンプルなので完全なMVVMではないですが、"追加する"ボタンが押下される毎にListViewにカラムを追加したいと思っています。
ただ上記プログラムだと「Item」という行が追加されるだけになってしまいます。
DataGridでもいいのですが、MVVMパターンで動的にカラムを追加する方法はないでしょうか?
ちなみに追加するカラム数の上限は決まっています。
ご助言いただけますと幸いです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/02/26 08:37
退会済みユーザー
2019/02/26 08:40