c# – 将ListView字段绑定到嵌套列表WPF
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 将ListView字段绑定到嵌套列表WPF,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3449字,纯文字阅读大概需要5分钟。
内容图文
![c# – 将ListView字段绑定到嵌套列表WPF](/upload/InfoBanner/zyjiaocheng/774/e2ef2994e8d34f7592207962e46c97bf.jpg)
我有以下课程:
class Event {
int eserc {get;set;}
int type {get;set;}
}
class Sequence {
List<Event> events;
int freq {get;set;}
}
如您所见,我在Sequence中有一个事件列表.我有一个Sequence列表.我想用一个带有序列列表的GridView显示一个ListView.对于每个序列,我想要有2列,一列具有属性freq的值,另一列应该具有与该序列相关联的事件列表.例如:
第一行与第一个序列相关.矩形的颜色代表事件的类型.在第一个序列中有以下事件:
> eserc 1类型“红色”
> eserc 2类型“红色”
> eserc 3类型“绿色”
> eserc 4类型“红色”
我知道我必须进行绑定才能显示值,但我不知道如何为序列执行此操作,因为我应该将列的值绑定到每个单个Sequence中的Event对象的值.这就是我为ListView编写的代码:
<ListView Name="resultsList" Grid.Row="5" Grid.Column="1"
Grid.ColumnSpan="3">
<ListView.View>
<GridView>
<GridViewColumn Header="Sequence" Width="450"
DisplayMemberBinding="{Binding events}"/>
<GridViewColumn Header="Frequence"
DisplayMemberBinding="{Binding freq}"/>
</GridView>
</ListView.View>
</ListView>
当然,绑定事件是错误的,因为只有当它是一个字符串时才会起作用,但这就是想法.
我在互联网上搜索,我认为我应该使用类似DataTemplate的东西,但我不确定,我不明白它是如何工作的.我知道它在源是一个对象时有效,但在这种情况下它是一个对象列表,我不知道如何获取信息.
解决方法:
要实现这一点,您需要在第一个GridViewColumn中定义另一个列表,列表应该是水平的(编辑ItemsPanelTemplate).您可以使用ListView,ListBox或ItemsControl(看起来最合适).
要根据事件的类型绘制具有不同颜色的边框,首先应为ItemsControl项定义自定义DataTemplate,并使用DataTrigger设置颜色,这里是完整的xaml:
<ListView Name="ResultsList"
ItemsSource="{Binding SequenceCollection}">
<ListView.View>
<GridView>
<GridViewColumn Header="Sequence" Width="450" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Events}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border>
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding Type}" Value="red">
<Setter Property="Background" Value="red"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="green">
<Setter Property="Background" Value="Green"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<TextBlock Text="{Binding Eserc, StringFormat='{}{0} '}"></TextBlock>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Frequence"
DisplayMemberBinding="{Binding Freq}"/>
</GridView>
</ListView.View>
</ListView>
SequenceCollection:
private ObservableCollection<Sequence> _sequenceCollection =new ObservableCollection<Sequence>()
{
new Sequence(){Events = new ObservableCollection<Event>()
{
new Event(){Eserc=1, Type = "red"},
new Event(){Eserc=2, Type = "red"},
new Event(){Eserc=3, Type = "green"},
new Event(){Eserc=4, Type = "red"},
},Freq = 3}
};
public ObservableCollection<Sequence> SequenceCollection
{
get { return _sequenceCollection; }
set
{
if (Equals(value, _sequenceCollection)) return;
_sequenceCollection = value;
OnPropertyChanged();
}
}
这里有你需要的邻接课程:
public class Event
{
public int Eserc { get; set; }
public string Type { get; set; }
}
public class Sequence
{
public ObservableCollection<Event> Events { get; set; }
public int Freq { get; set; }
}
输出:
在一边:
>确保定义公共属性以便能够正确绑定它们
>使用命名约定
>使用ObservableCollection而不是List(它们实现ICollectionChanged,这对于更改通知很方便)
>不要忘记实现INotifyPropertyChanged接口
内容总结
以上是互联网集市为您收集整理的c# – 将ListView字段绑定到嵌套列表WPF全部内容,希望文章能够帮你解决c# – 将ListView字段绑定到嵌套列表WPF所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。