Я пытаюсь заставить дерево работать с моими данными. Я использую WPF MVVM с Caliburn Micro, но почему-то я не могу заставить работать привязки так, как хочу.
Мои данные в упрощенном виде выглядят так.
Операция класса
public class Operation
{
public string Name { get; set; }
public int Id { get; set; }
public ObservableCollection<Parameters> parameters { get; set; }
public Operation()
{
parameters = new ObservableCollection<Parameters>();
}
}
и параметры класса
public class Parameters
{
public string par { get; set; }
public double val { get; set; }
public ObservableCollection<Joints> Joints { get; set; }
public Parameters()
{
Joints = new ObservableCollection<Joints>();
}
}
И класс соединений
В моей ShellViewModel я инициализирую эти классы и помещаю некоторые данные внутри ...
public Operation _Operation = new Operation();
int moveId = 0;
public BindableCollection<Operation> Operations
{
get { return _Operations; }
set
{
_Operations = value;
NotifyOfPropertyChange(() => Operations);
}
}
public ShellViewModel()
{
var moveOperation = new Operation
{
Id = moveId,
Name = $"Move{moveId}"
};
Joints jt1 = new Joints() { Par = "J0", Val = 2.34 };
Joints jt2 = new Joints() { Par = "J0", Val = 0.34 };
Parameters parm = new Parameters { par = "a", val = 2.13 };
parm.Joints.Add(jt1);
parm.Joints.Add(jt2);
moveOperation.Parameters.Add(parm);
}
Моя цель - визуализировать его в виде дерева примерно так:
- Move1
-a 2.13
-Joints
-J0 2.34
-J1 0.34
- Move2
-a 'some value'
-Joints
-J0 'some value'
-J1 'some value'
Но как бы я ни пытался заставить xaml работать, Я никогда не мог показать детям ... Это только один из примеров, которые я сделал.
<TreeView Grid.Row="1" Grid.Column="1" MinWidth="150"
ItemsSource="{Binding Operations}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Parameters}">
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="{Binding par}"/>
<TextBlock Text=" " ></TextBlock>
<TextBlock VerticalAlignment="Center" Text="{Binding val}"/>
<TextBlock VerticalAlignment="Center" Text="{Binding Par}"/>
<TextBlock VerticalAlignment="Center" Text="{Binding Val}"/>
<TextBlock VerticalAlignment="Center" Text="{Binding Par}"/>
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" FontSize="15" Text="{Binding Name}"/>
</StackPanel>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Пожалуйста, примите к сведению любые рекомендации или помощь, я потерял три полных дня, только пытаясь заставить это дерево работать. Спасибо!
РЕДАКТИРОВАТЬ: У меня была опечатка в классе параметров, спасибо за указание на это. Я хотел переместить Суставы на один уровень ниже, чем раньше, на самом деле это была моя проблема, как попасть на более глубокие уровни