'Edit Datagrid in WPF
How I can provide ComboBox to a particular DataGrid Column in wpf when user tries to edit data grid . For example user can change the Operator at run time from ">" , "<", "=", ">=", "<=". Also how can I stop user from entering negative values are in Value column
MainWindow.xaml.cs
namespace EditableDataGridApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
mydatagrid.ItemsSource = fields.Rule();
}
}
}
MainWindow.Xaml
<Grid>
<DataGrid Name="mydatagrid" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" IsReadOnly="True"></DataGridTextColumn>
<DataGridTextColumn Header="Operator" Binding="{Binding Path=Operator}"></DataGridTextColumn>
<DataGridTextColumn Header="Value" Binding="{Binding Path=Value}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
Field.cs
namespace EditableDataGridApp
{
class fields
{
public string Name { get; set; }
public string Operator { get; set; }
public int Value { get; set; }
public static ObservableCollection<fields> Rule()
{
ObservableCollection<fields> a = new ObservableCollection<fields>();
a.Add(new fields() {Name = "length", Operator= "=", Value =5 });
a.Add(new fields() { Name = "Width", Operator =">", Value = 6 });
a.Add(new fields() { Name = "Height", Operator = "<", Value = 8 });
return a;
}
}
Solution 1:[1]
Combobox can be created by
<DataGridComboBoxColumn Header="Operator" x:Name="Operator" SelectedValueBinding="{Binding Path=Operator, Mode=TwoWay,UpdateSourceTrigger=LostFocus}" ItemsSource="{Binding Operators}" ></DataGridComboBoxColumn>
Itemsource for ComboBox will be the list of all the elements you want in your dropdown.
public List<String> Operators;
Operators = new List<string>();
Operators.Add("=");
Operators.Add("<");
Operators.Add(">");
Operators.Add(">=");
Operators.Add("=<");
You can write this code of providing list of operators in xaml.cs file
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Leo |