LoginSignup
0
0

More than 5 years have passed since last update.

Visual Studio / WPF > DataGrid > DataGridComboBoxColumnを使ってみる

Last updated at Posted at 2017-04-21
動作環境
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

関連 Visual Studio / WPF > DataGrid > XAMLで列を追加して、CSでデータを追加する

DataGridViewDataGridにおいて、コンボボックスを扱いたい。

参考: http://stackoverflow.com/questions/19003133/wpf-datagrid-combobox-column

  1. XAMLにてDataGridComboBoxColumn追加
    • x:Name指定
    • SelectedValueBinding指定
    • DisplayMemberPath指定
XAML
        <DataGrid x:Name="dataGridView1" HorizontalAlignment="Left" Height="211" Margin="10,10,0,0" VerticalAlignment="Top" Width="497">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
                <DataGridComboBoxColumn Width="100" x:Name="Gender"
                                        Header="Gender"
                                        SelectedValueBinding="{Binding Gender, Mode=TwoWay}"
                                        DisplayMemberPath="{Binding Gender}"/>
            </DataGrid.Columns>
        </DataGrid>

MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace _170421_t1510_WpfDataGridComboBox
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public List<string> genlist { get; set; }

        public MainWindow()
        {
            genlist = new List<string>();
            genlist.Add("Male");
            genlist.Add("Female");

            InitializeComponent();
            Gender.ItemsSource = genlist;
            dataGridView1.Items.Add(new Employee { Name = "7of9", Gender = "Female" });
            dataGridView1.Items.Add(new Employee { Name = "Chakotay", Gender = "Male" });
            dataGridView1.Items.Add(new Employee { Name = "Odo", Gender = "Unknown" });
        }
    }
    public class Employee
    {
        public string Name { get; set; }
        public string Gender { get; set; }
    }
}

work.png

Odo (Deep Space Nineのキャラクター)はUnknownのGenderであるが、追加しても「Unknown」という表示ではない。Genderのリスト項目にないためだろう。

コンボボックス項目を編集しようとしてダブルクリックすると例外が発生する。このあたりは今後の学習事項。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0