我想用ItemsControl来展示一个竖着排列的数据,就像stackpanel那样竖着展示
可我用ItemsSource绑定,没有任何展示
我用的是一个UserControl,在后台代码上用DataContext绑定了一个School,类里面有个属性是IList<Student>,我想用ItemsControl绑定的就是IList<Student>,展示是Student里面的NAME属性
大概界面上绑定是这样:
<DockPanel>
<ScrollViewer Name="scrollViewer" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<Border Margin="20">
<StackPanel Name="content">
<StackPanel ...>
<TextBlock Text="学校名称"></TextBlock>
<TextBox ... Text="{Binding Name, Mode=TwoWay}"></TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal" Width="450" Height="35">
<TextBlock Text="学校状态"></TextBlock>
<ComboBox ... ItemsSource="{Binding PlatformTypes}" SelectionChanged="PlatformType_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource platformConverter}}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<StackPanel Orientation="Vertical" Width="450" x:Name="selectModelPanel">
<StackPanel Orientation="Horizontal" Width="450">
<TextBlock Width="80" TextAlignment="Right"
VerticalAlignment="Center" Text="学生名字列表"></TextBlock>
<!-- 关注点, start -->
<ItemsControl x:Name="studentList" ItemsSource="{Binding ModelList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border>
<TextBlock Text="{Binding NAME}"></TextBlock>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<!-- 关注点, end -->
</StackPanel>
</StackPanel>
<Button ... Name="addstudent" Click="AddStudent_Click" Content="增加学生"></Button>
</StackPanel>
</Border>
</ScrollViewer>
</DockPanel>
public class School{
public IList<Student> Students {get;set;}
public string Name {get;set;}
...
}
public class Student{
public string NAME {get;set;}
public Sex sex {get;set;}
public short level {get;set;}
...
}
请问一下我该怎么绑定,ItemsControl应该怎么写
要么用ListBox也成,但ListBox我也绑不上QAQ
绑定菜鸟求助...
<ListBox ...x:Name="studentList" ItemsSource="{Binding ModelList}" >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding NAME}"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
试试这个方法呢,只用ListBox但是挺丑的
可以是可以,但只能是重新打开这个界面,做编辑的时候有用,新增的时候就是不能显示,在我点击按钮新增我给School的StudentList的值赋值付好了,但界面就是一个空白的ListBox,好奇怪啊
<ItemsControl x:Name="studentList" ItemsSource="{Binding ModelList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border>
<ListBox itemsource={binding nameof(类里面有个属性是IList<另一个类>)}>
<ListBox.ItemTemplate>
<TextBlock Text="{Binding NAME}"></TextBlock>
</ListBox.ItemTemplate>
</ListBox>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
不行啊,界面上ItemsControl那一块是空白的,我还忘记说了一点,我点击那个Button是弹出一个新的界面,在界面上选择了值之后,才在ItemsControl里面显示出来的,不知道这点是不是会有影响
@伊人为谁醉:
你这描述的不太清楚,模模糊糊的
@猝不及防: 我修改了一下问题,描述有没有清楚一点
@伊人为谁醉: 把viewmodel也贴出来
@猝不及防: viewmodel也差不多
Listbox 和 Expander效果蛮好的
当ViewModel修改后,需要Notify界面刷新,两种方式: