Hi I have a problem in display selected item of combo box in a data grid. in this code nothing show in combo box as selected item.
this is my xaml :
<code> <DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.GridTypes, RelativeSource={RelativeSource AncestorType=Window}}"
SelectedItem="{Binding GridType, Mode=TwoWay}"
DisplayMemberPath="Name"
Style="{StaticResource ComboBoxFlatStyle}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</code>
<code> <DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.GridTypes, RelativeSource={RelativeSource AncestorType=Window}}"
SelectedItem="{Binding GridType, Mode=TwoWay}"
DisplayMemberPath="Name"
Style="{StaticResource ComboBoxFlatStyle}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</code>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.GridTypes, RelativeSource={RelativeSource AncestorType=Window}}"
SelectedItem="{Binding GridType, Mode=TwoWay}"
DisplayMemberPath="Name"
Style="{StaticResource ComboBoxFlatStyle}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
this is my code behind:
<code> public DatumManagerMainWindow(Models.DatumManager datumManager)
{
InitializeComponent();
MainWindowViewModel mainViewModel = new MainWindowViewModel(datumManager);
this.DataContext = mainViewModel;
dtg_xGrids.ItemsSource = mainViewModel.HorizontalGrids;
dtg_yGrids.ItemsSource = mainViewModel.VerticalGrids;
}
</code>
<code> public DatumManagerMainWindow(Models.DatumManager datumManager)
{
InitializeComponent();
MainWindowViewModel mainViewModel = new MainWindowViewModel(datumManager);
this.DataContext = mainViewModel;
dtg_xGrids.ItemsSource = mainViewModel.HorizontalGrids;
dtg_yGrids.ItemsSource = mainViewModel.VerticalGrids;
}
</code>
public DatumManagerMainWindow(Models.DatumManager datumManager)
{
InitializeComponent();
MainWindowViewModel mainViewModel = new MainWindowViewModel(datumManager);
this.DataContext = mainViewModel;
dtg_xGrids.ItemsSource = mainViewModel.HorizontalGrids;
dtg_yGrids.ItemsSource = mainViewModel.VerticalGrids;
}
and this is my view model:
<code> internal class MainWindowViewModel
{
public ObservableCollection<DatumGrid> HorizontalGrids { get; set; }
public ObservableCollection<DatumGrid> VerticalGrids { get; set; }
public ObservableCollection<DatumLevel> Levels { get; set; }
public ObservableCollection<DatumGridType> GridTypes { get; set; } // Add this property
public MainWindowViewModel(Models.DatumManager datumManager)
{
var datumSystem = datumManager.GetDatumSystem();
HorizontalGrids = datumSystem.HorizontalGrids;
VerticalGrids = datumSystem.VerticalGrids;
Levels = datumSystem.Levels;
GridTypes = datumManager.GetDatumGridTypes();
}
}
</code>
<code> internal class MainWindowViewModel
{
public ObservableCollection<DatumGrid> HorizontalGrids { get; set; }
public ObservableCollection<DatumGrid> VerticalGrids { get; set; }
public ObservableCollection<DatumLevel> Levels { get; set; }
public ObservableCollection<DatumGridType> GridTypes { get; set; } // Add this property
public MainWindowViewModel(Models.DatumManager datumManager)
{
var datumSystem = datumManager.GetDatumSystem();
HorizontalGrids = datumSystem.HorizontalGrids;
VerticalGrids = datumSystem.VerticalGrids;
Levels = datumSystem.Levels;
GridTypes = datumManager.GetDatumGridTypes();
}
}
</code>
internal class MainWindowViewModel
{
public ObservableCollection<DatumGrid> HorizontalGrids { get; set; }
public ObservableCollection<DatumGrid> VerticalGrids { get; set; }
public ObservableCollection<DatumLevel> Levels { get; set; }
public ObservableCollection<DatumGridType> GridTypes { get; set; } // Add this property
public MainWindowViewModel(Models.DatumManager datumManager)
{
var datumSystem = datumManager.GetDatumSystem();
HorizontalGrids = datumSystem.HorizontalGrids;
VerticalGrids = datumSystem.VerticalGrids;
Levels = datumSystem.Levels;
GridTypes = datumManager.GetDatumGridTypes();
}
}
and this is my model:
<code> public class DatumGrid : Datum
{
public int Id { get; }
public string Name { get; set; }
public DatumGridType GridType { get; set; }
public DatumGridDirection Direction { get; }
public double Ordinate { get; set; }
public DatumGrid(int id, string name, DatumGridType gridType, DatumGridDirection direction, double ordinate)
{
Id = id;
Name = name;
GridType = gridType;
Direction = direction;
Ordinate = ordinate;
}
}
</code>
<code> public class DatumGrid : Datum
{
public int Id { get; }
public string Name { get; set; }
public DatumGridType GridType { get; set; }
public DatumGridDirection Direction { get; }
public double Ordinate { get; set; }
public DatumGrid(int id, string name, DatumGridType gridType, DatumGridDirection direction, double ordinate)
{
Id = id;
Name = name;
GridType = gridType;
Direction = direction;
Ordinate = ordinate;
}
}
</code>
public class DatumGrid : Datum
{
public int Id { get; }
public string Name { get; set; }
public DatumGridType GridType { get; set; }
public DatumGridDirection Direction { get; }
public double Ordinate { get; set; }
public DatumGrid(int id, string name, DatumGridType gridType, DatumGridDirection direction, double ordinate)
{
Id = id;
Name = name;
GridType = gridType;
Direction = direction;
Ordinate = ordinate;
}
}
and i want to display name of DatumGridType with this class:
<code> public class DatumGridType
{
public int Id { get; }
public string Name { get; }
public DatumGridType( int id,string name)
{
Id = id;
Name = name;
}
}
</code>
<code> public class DatumGridType
{
public int Id { get; }
public string Name { get; }
public DatumGridType( int id,string name)
{
Id = id;
Name = name;
}
}
</code>
public class DatumGridType
{
public int Id { get; }
public string Name { get; }
public DatumGridType( int id,string name)
{
Id = id;
Name = name;
}
}
please help me . thanks
I can see any selected item in my combo boxes.
New contributor
ali rahbar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.