Поле со списком DataGrid ComboBoxColumn не отображается - PullRequest
0 голосов
/ 26 февраля 2019

Я создал поле со списком сетки данных, однако до тех пор, пока не будет выбрано поле со списком сетки данных, оно действует как текстовое поле.

Как я могу постоянно показывать стрелку вниз в поле со списком сетки данных, чтобы пользователь знал, что это поле со списком.

<DataGrid Name="DataGridPerson" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" />
            <DataGridComboBoxColumn  x:Name="ComboBoxGender" SelectedItemBinding="{Binding Gender}" Header="Gender"/>
        </DataGrid.Columns>
    </DataGrid>

public partial class MainWindow : Window
{
    public ObservableCollection<Person> People = new ObservableCollection<Person>();
    public ObservableCollection<string> Genders = new ObservableCollection<string> { "Male", "Female" };
    public MainWindow()
    {
        InitializeComponent();
        DataGridPerson.ItemsSource = GetPeople();
        ComboBoxGender.ItemsSource = Genders;
    }

    private ObservableCollection<Person> GetPeople()
    {
        People.Add(new Person()
        {
            Name = "Jane Doe",
            Gender = "Female"
        });

        return People;
    }
}
public class Person{

    public string Name { get; set; }

    public string Gender { get; set; }
}

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете сделать это довольно легко, используя взамен TemplateColumn и поместив Combobox внутрь:

          <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox></ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

Хотя вам, возможно, придется связывать элементы Combobox другим способом ...

...