前提・実現したいこと
WPFの編集可能なDataGridのComboBoxへ値をBindingしたいのですがうまくいきません。
ComboBoxのData Bindingについて検索してみましたがずばりこのパターンが見つからなかったのでご教示願います。
.Net Core 3.0
Prism 7.2.0.1367
発生している問題・エラーメッセージ
ListViewだと期待通りの表示がされるがComboBoxには何も表示されない。
ソースコード
MainWindowViewModel.cs
C#
1using Prism.Mvvm; 2using System.Collections.Generic; 3using System.Collections.ObjectModel; 4 5namespace DataGridComboBox.ViewModels 6{ 7 public class MainWindowViewModel : BindableBase 8 { 9 private string _title = "Prism Application"; 10 public string Title 11 { 12 get { return _title; } 13 set { SetProperty(ref _title, value); } 14 } 15 16 public ObservableCollection<Item> Data { get; set; } = new ObservableCollection<Item>(); 17 18 public class Item 19 { 20 public string Name { get; set; } 21 public CategoryType Category { get; set; } 22 } 23 24 public class CategoryType 25 { 26 public static readonly CategoryType None = new CategoryType(0); 27 public static readonly CategoryType Category1 = new CategoryType(1); 28 public static readonly CategoryType Category2 = new CategoryType(2); 29 30 public string DisplayValue 31 { 32 get 33 { 34 if (this == None) return "不明"; 35 if (this == Category1) return "カテゴリ1"; 36 if (this == Category2) return "カテゴリ2"; 37 return "不明"; 38 } 39 } 40 41 public int Value { get; } 42 public CategoryType(int value) 43 { 44 Value = value; 45 } 46 } 47 48 public MainWindowViewModel() 49 { 50 Data.AddRange(new List<Item> { 51 new Item() { Name = "No1" , Category = CategoryType.None }, 52 new Item() { Name = "No2", Category = CategoryType.Category1 }, 53 new Item() { Name = "No3", Category = CategoryType.Category2 } 54 }); 55 } 56 } 57}
MainWindow.xaml
xaml
1<Window x:Class="DataGridComboBox.Views.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:prism="http://prismlibrary.com/" 5 prism:ViewModelLocator.AutoWireViewModel="True" 6 Title="{Binding Title}" Height="350" Width="525" > 7 <StackPanel> 8 <DataGrid ItemsSource="{Binding Data , Mode=TwoWay}" CanUserAddRows="True" CanUserDeleteRows="True" AutoGenerateColumns="False"> 9 <DataGrid.Columns> 10 <DataGridTextColumn Header="名前" Binding="{Binding Name}" /> 11 <DataGridTemplateColumn Header="カテゴリ"> 12 <DataGridTemplateColumn.CellTemplate> 13 <DataTemplate> 14 <ComboBox ItemsSource="{Binding Category}" DisplayMemberPath="Category.DisplayValue" /> 15 </DataTemplate> 16 </DataGridTemplateColumn.CellTemplate> 17 </DataGridTemplateColumn> 18 </DataGrid.Columns> 19 </DataGrid> 20 <ListView ItemsSource="{Binding Data}"> 21 <ListView.View> 22 <GridView> 23 <GridViewColumn Header="名前" DisplayMemberBinding="{Binding Name}" /> 24 <GridViewColumn Header="カテゴリ" DisplayMemberBinding="{Binding Category.DisplayValue}" /> 25 </GridView> 26 </ListView.View> 27 </ListView> 28 </StackPanel> 29</Window>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/13 11:42