Visual Studio/WPF > DataGrid > 오류: 열 수가 많음 > DataGridView1.AutoGenerateColumns = False

운영 환경
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

ComboBoxItem을 설정하려고 시도하고 오류가 발생했습니다.

참고 : htp : // bg. 반찬. jp/엔트리/20130224/1361693816

만든 코드



XAML
<Window x:Class="_170421_t1510_WpfDataGridComboBox.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:_170421_t1510_WpfDataGridComboBox"
        xmlns:sys="clr-namespace:System;assembly=mscorlib" 
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">

    <Grid>
        <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 Header="Gender" 
                        SelectedValueBinding="{Binding Gender}"
                        DisplayMemberPath="Label" 
                        SelectedValuePath="Value">
                    <DataGridComboBoxColumn.ItemsSource>
                        <x:Array Type="{x:Type local:GenderComboBoxItem}">
                            <local:GenderComboBoxItem Label="未選択" Value="None" />
                            <local:GenderComboBoxItem Label="男" Value="Men" />
                            <local:GenderComboBoxItem Label="女" Value="Women" />
                        </x:Array>
                    </DataGridComboBoxColumn.ItemsSource>
                </DataGridComboBoxColumn>
            </DataGrid.Columns>
        </DataGrid>

    </Grid>
</Window>

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 MainWindow()
        {
            InitializeComponent();

            List<User> users = new List<User>();
            users.Add(new User() { Name = "7of9", Gender = "Women" });
            users.Add(new User() { Name = "Chakotay", Gender = "Men" });
            users.Add(new User() { Name = "Odo", Gender = "None" });
            dataGridView1.ItemsSource = users;
        }
    }
    public class User
    {
        public string Name { get; set; }
        public string Gender { get; set; }
    }
    public enum Gender
    {
        None,
        Men,
        Women,
    }
    public class GenderComboBoxItem
    {
        public string Label { get; set; }
        public Gender Value { get; set; }
    }
}


  • Name와 Gender의 열이 복수가 되어 버린다.

  • 오류 수정



    참고 : htps : // 소시아 l. msd 응. 미 c 로소 ft. 코 m / 훗 ny-ko m s? 흠 m = vb 게네라 l

    DataGridView1.AutoGenerateColumns = False

    상기를 넣으면 열이 많은 문제는 없어졌다.

    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 MainWindow()
            {
                InitializeComponent();
    
                List<User> users = new List<User>();
                users.Add(new User() { Name = "7of9", Gender = "Women" });
                users.Add(new User() { Name = "Chakotay", Gender = "Men" });
                users.Add(new User() { Name = "Odo", Gender = "None" });
                dataGridView1.AutoGenerateColumns = false; /* 1 */
                dataGridView1.ItemsSource = users;
            }
        }
        public class User
        {
            public string Name { get; set; }
            public string Gender { get; set; }
        }
        public enum Gender
        {
            None,
            Men,
            Women,
        }
        public class GenderComboBoxItem
        {
            public string Label { get; set; }
            public Gender Value { get; set; }
        }
    }
    





    ぃ tp // m / 7, f9 / ms / 523cdcb42d7 689d392
    v0.1에서 나온 오류는 위에서 나오지 않습니다.
    레코드의 새로운 추가도 가능하다.

    참고로 했다
    htp : // bg. 반찬. jp/엔트리/20130224/1361693816
    에 있어서는 XAML 파일에서 이하와 같이 false 설정하고 있었다.
    <DataGrid Name="dataGrid" AutoGenerateColumns="False">
    

    좋은 웹페이지 즐겨찾기