请告诉我为什么在 VS 调试器中数字显示为 0x0000000a 以及如何修复它?
主页
/
user-362138
Maxim's questions
请告诉我如何绑定 3 个嵌套列表:
ViewModel 有一个项目列表:
public class ViewModel : INotifyPropertyChanged
{
public ObservableCollection<Project> Projects{ get; set; } = new ObservableCollection<Project>();
private Project selProject;
public Project SelProject {
get { return selProject; }
set
{
selProject = value;
OnPropertyChanged("SelProject");
}
}
private Project selSec;
public Project SelSec
{
get { return selSec; }
set
{
selSec = value;
OnPropertyChanged("SelSec");
}
}
public ViewModel()
{
var pr1 = new Project("pr1");
ObservableCollection<Section> sec = new ObservableCollection<Section> { new Section("sec1"), new Section("sec2") };
ObservableCollection<Model> models = new ObservableCollection<Model> { new Model("model1"), new Model("model2") };
sec.First().Models.Add(models.First());
sec.First().Models.Add(models.Last());
sec.Last().Models.Add(models.First());
sec.Last().Models.Add(models.Last());
pr1.Sections.Add(sec.First());
pr1.Sections.Add(sec.Last());
Projects.Add(pr1);
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName]string prop = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
项目类:
public class Project
{
public string Projectname { get; set; }
public ObservableCollection<Section> Sections { get; set; } = new ObservableCollection<Section>();
public Project(string name)
{
Projectname = name;
}
}
其中有一个部分列表:
public class Section
{
public string SectionName { get; set; }
public ObservableCollection<Model> Models { get; set; } = new ObservableCollection<Model>();
public Section (string name )
{
SectionName = name;
}
}
在部分列表中有一个模型列表:
public class Model
{
public string ModelName { get; set; }
public Model (string name)
{
ModelName = name;
}
}
我做这样的绑定:
<ListBox Grid.Column="0" ItemsSource="{Binding Projects}"
SelectedItem="{Binding SelProject}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="5">
<TextBlock FontSize="12" Text="{Binding Path=Projectname}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<StackPanel Grid.Column="1" Orientation="Horizontal" DataContext="{Binding SelProject}">
<ListBox ItemsSource="{Binding Sections}" SelectedItem="{Binding SelSec}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="5">
<TextBlock FontSize="12" Text="{Binding Path=SectionName}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<ListBox ItemsSource="{Binding SelSec.Models}" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="5">
<TextBlock FontSize="12" Text="{Binding Path=ModelName}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
但是最后一个 ListBox 没有显示模型列表,我做错了什么?