我正在制作聊天程序,我需要一个支持图标,名称,横幅,状态图标的UserList控件。
这是我要克隆的UserList的图片:
如您所见,用户名出现在背景图像的顶部。
远处的状态显示为管理员为红色,成员为黄色等等。
还有2个状态图标出现在管理员/成员状态之前,它们显示用户是否接受私人聊天/消息,这是一张照片:
如您所见,UserList可以包含普通(非横幅状)图标以及聊天/下午状态。
UserList必须像任何普通的listview类型控件一样滚动。
那么有人可以告诉我如何在C#winforms或wpf中生成这个控件吗?
非常感谢任何帮助!
答案 0 :(得分:1)
如果您使用的是WPF,请从ListView开始,并将视图设置为GridView。 然后设置列和单元格模板。 绑定属性。
<ListView Margin="10" Name="lvUsers" ItemsSource="{Binding Users}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid>
<Image Source="{Binding UserIcon}"/>
<TextBlock Text="{Binding Name}" Margin="20,0,0,0" />
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Status">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{StaticResource PrivateChatImage}" Visibility="{Binding IsPrivateChat, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<Image Source="{StaticResource PrivateMessImage}" Visibility="{Binding IsPrivateMess, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<Image Source="{Binding StatusIcon}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
答案 1 :(得分:0)
非常感谢您试图帮助您。
但我设法通过自定义绘制所有内容来解决问题。
这是最终结果 http://q67.imgup.net/Untitledeb8d.png
基本上我做的是创建一个WinForms UserControl然后添加一个userList类,以便它挂钩到OnPaint()然后循环并吸引用户。
它工作得相当好,然后我用名称和状态为它制作了一个标题,然后我让分离器可以移动它(因为它上面绘制它必须是所有手动的东西)。它正确地将光标设置为分割器。
在完成之后,我需要一种方法来了解一个人点击的用户,但这只是一个简单的直接搜索。
在完成之后我需要一个有效的滚动,所以我将用户绘画移动到一个继承SplitterControl的新类我相信然后我根据列表中有多少用户设置它的滚动大小*元素有多大等。
总而言之,这个用户列表似乎与我试图克隆的用户列表一样好。
所以一切都很好!。