Итак, я перебираю List <> внутри List.первые четыре цикла foreach
в порядке, они работают.
var Paths = PathFragment.GetPathsSets(d)
- вот где я получаю список в списке.Пути для отладки имеют 2 элемента, каждый из которых имеет listOfCables
, Count = 6 и Count = 4 соответственно.Далее: listOfCables
имеет Cables
(очевидно), который является классом со свойством capacitiveCurrent_Length
.Когда цикл попадает в каждое значение, он добавляет его к свойству ShowProductSum
в ViewModel.Логика, стоящая за этим:
foreach (var a in modelGPZ.listOfTrans)
foreach (var b in a.listOfSection)
foreach (var c in b.listOfLineWy)
if (c != null)
{
foreach (var d in c.PathsList)
{
var Paths = PathFragment.GetPathsSet(d);
for (int i = 0; i < Paths.Count; i++)
{
var licznik = Paths[i].listOfCables.Count;
for (int j = 0; j < licznik; j++)
{
ShowProductSum +=Paths[i].listOfCables[j]
.capacitiveCurrent_Length;
}
}
}
}
Работает так, как я хотел, но что-то не так ... может быть, более кратким? Что я могу сделать, чтобы это выглядело лучше или быстрее?
Так как у меня есть свойство ShowProductSum
:
public double _showProductSum;
public double ShowProductSum
{
get { return _showProductSum; }
set
{
_showProductSum= value;
OnPropertyChanged("ShowProductSum");
}
}
, и это:
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
Я пытаюсь связать ShowProductSum
и capacitiveCurrent
свойство, которое находится в другом классе.
Моя наблюдаемая коллекция:
private ObservableCollection<double> _comboBoxCapacitiveCurrent = new ObservableCollection<double>();
public ObservableCollection<double> ComboBoxCapacitiveCurrent
{
get
{
_comboBoxCapacitiveCurrent.Clear();
_comboBoxCapacitiveCurrent.Add(lineWy.capacitiveCurrent); // this is the first property to bind
_comboBoxCapacitiveCurrent.Add(ShowProductSum); // and the second property
return _comboBoxCapacitiveCurrent;
}
set
{
OnPropertyChanged("ComboBoxPradPojemnosciowy");
}
}
public double SelectedItem { get; set; }
ComboBox:
<DataGridTemplateColumn Header="CAPACITIVE CURRENT [A]" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding Path=ComboBoxCapacitiveCurrent}" DisplayMemberPath="nazwa"
SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
Свойства не отображаются в представлении, что я должен сделать, чтобы они отображались? Я хочу предоставить больше кода и развеять все сомнения.