Я разрабатываю приложение, которое имеет эту DataGrid.Каждая строка имеет свой собственный Combobox в той же колонке.Изображено под:
https://imgur.com/1Wn41dD
Как описано на рисунке, я хочу, чтобы каждый ComboBox имел свои собственные элементы, так как значение «15» для всех них, остальные значения должны быть размещены соответствующим образомв строке это соответствует.Что важно - 'SumaIlooczynowDlaComboBoxów' - это словарь с целочисленными идентификаторами, соответствующими идентификаторам строки / строки, двойное значение - это то, что заполняется в комбинированных списках (двойные значения на рисунке).Моя проблема в том, что я хочу, чтобы отображались / заполнялись только определенные элементы.Может кто-нибудь привести примеры, как мне удалось это сделать?Если я что-то упустил из своего кода, дайте мне знать в комментариях
Может быть больше строк / строк (L1, L2 и т. Д.).Больше строк означает больше элементов в комбинированных списках ... что нежелательно.
ComboBox XAML:
<DataGridTemplateColumn Header="PRĄD POJEMNOŚCIOWY [A]" HeaderStyle="{StaticResource PRAD_POJEMNOSCIOWY}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding ComboBoxPradPojemnosciowy, RelativeSource={RelativeSource AncestorType=Window}}"
SelectedValue="{Binding SelectedItem, UpdateSourceTrigger=PropertyChanged}"
IsEditable="True"
Text= "{Binding Path=Prad_pojemnosciowy, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Вот как я заполняю ComboBox:
private void RefreshComboBox(object sender)
{
ComboBoxPradPojemnosciowy.Clear();
ComboBoxPradPojemnosciowy.Add(lineWy.Prad_pojemnosciowy);
for (int i = 0; i < SumyIloczynowDlaComboBoxów.Count; i++)
{
double value = SumyIloczynowDlaComboBoxów[SumyIloczynowDlaComboBoxów.Keys.ElementAt(i)];
ComboBoxPradPojemnosciowy.Add(value);
}
}
Это свойства, устанавливающие все мои значения в одном месте, поэтому значения отображаются как минимум.
private ObservableCollection<double> _comboBoxPradPojemnosciowy = new ObservableCollection<double>();
public ObservableCollection<double> ComboBoxPradPojemnosciowy // lista elementów ComboBoxa, ktory wyswietla sumy iloczynow pradu zwarciowego i dlugosci kabla
{
get
{
return _comboBoxPradPojemnosciowy;
}
set
{
_comboBoxPradPojemnosciowy.Clear();
foreach (var item in value)
{
_comboBoxPradPojemnosciowy.Add(item);
}
OnPropertyChanged("ComboBoxPradPojemnosciowy");
}
}
private double _selectedItem;
public double SelectedItem
{
get
{
return _selectedItem;
}
set
{
var line = (modelGPZ.GetLineWyList().FirstOrDefault(x => x.isSelected == true));
if (line != null)
{
_selectedItem = value;
}
else
{
_selectedItem = lineWy.Prad_pojemnosciowy;
}
OnPropertyChanged("SelectedItem");
}
}
private Dictionary<int, double> _sumyIloczynowDlaComboBoxów = new Dictionary<int, double>();
public Dictionary<int, double> SumyIloczynowDlaComboBoxów
{
get { return _sumyIloczynowDlaComboBoxów; }
set
{
if (_sumyIloczynowDlaComboBoxów != value)
{
_sumyIloczynowDlaComboBoxów = value;
OnPropertyChanged("SumyIloczynowDlaComboBoxów");
OnPropertyChanged("ComboBoxPradPojemnosciowy");
}
}
}