попробовав множество (не работающих) решений, я надеюсь, что кто-то может мне помочь.
Если фокус выбранной строки в моем DataGrid потерян, выбранное значение столбца ComboBox также будет потеряно.
Это мой XAML-код
<Window x:Class="DataGridComboBoxTest.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:DataGridComboBoxTest"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<DataGrid Name="dataGrid"></DataGrid>
</Grid>
И это код CS:
using System.Collections.Generic;
using System.Data;
using System.Windows;
using System.Windows.Controls;
namespace DataGridComboBoxTest
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//Some Sample Data
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Name");
dataTable.Columns.Add("Age");
DataRow dataRow1 = dataTable.NewRow();
dataRow1["Name"] = "John";
dataRow1["Age"] = "33";
dataTable.Rows.Add(dataRow1);
DataRow dataRow2 = dataTable.NewRow();
dataRow2["Name"] = "Emily";
dataRow2["Age"] = "19";
dataTable.Rows.Add(dataRow2);
this.dataGrid.ItemsSource = dataTable.DefaultView;
//Add ComboBox Column
Dictionary<string, string> genders = new Dictionary<string, string>();
genders.Add("f", "female");
genders.Add("m", "male");
DataGridComboBoxColumn dgCmbColumn = new DataGridComboBoxColumn();
dgCmbColumn.Header = "Gender";
dgCmbColumn.SelectedValuePath = "Key";
dgCmbColumn.DisplayMemberPath = "Value";
dgCmbColumn.ItemsSource = genders;
this.dataGrid.Columns.Add(dgCmbColumn);
}
}
}
Я перепробовал много решений с Bindings, но у меня ничего не работает.