这样的集四个功能于一体的listview,它的xaml文件和xaml.cs文件该如何写?

booooook 2011-04-27 02:25:15
1、条目当内容太长时,能够自动换行。
2、条目需要有交替色(间隔色),就是“单数行”和“双数行”颜色不同,
就像csdn论坛的帖子条目那样,颜色交替。
3、每个条目前面需要有CheckBox。
4、条目需要绑定数据源listView.DataContex。


这个要求很高,奈何还没有达到该水平。请教各位了。。。





...全文
240 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
booooook 2011-04-28
  • 打赏
  • 举报
回复
已解决
[code=XAML]

<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="Window_Loaded"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="200"></ColumnDefinition>
</Grid.ColumnDefinitions>

<Grid.Resources>
<DataTemplate x:Key="myCellForTitle">
<TextBlock TextWrapping="Wrap" Text="{Binding Title1}" Background="Red"/>
</DataTemplate>

<DataTemplate x:Key="myCellForTitle1">
<CheckBox IsChecked="True">
<TextBlock Text="{Binding Title1}" TextWrapping="Wrap"></TextBlock>
</CheckBox>
</DataTemplate>

<Style x:Key="AlternateItemStyle" TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Background" Value="LimeGreen"></Setter>
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="Gray"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Resources>



<ListView Name="listView1"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemsSource="{Binding}"
Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="1"
AlternationCount="2" ItemContainerStyle="{StaticResource AlternateItemStyle}">
<ListView.View>
<GridView>
<GridViewColumn Header="Set ReadOnly" CellTemplate="{StaticResource myCellForTitle1}" ></GridViewColumn>

<GridViewColumn Header="Results of Searching 1" CellTemplate="{StaticResource myCellForTitle}"></GridViewColumn>

<GridViewColumn Header="Results of Searching 2" DisplayMemberBinding="{Binding Path=Title1}"></GridViewColumn>
<GridViewColumn Header="Results of Searching 3" CellTemplate="{StaticResource myCellForTitle}"></GridViewColumn>
<!---->
</GridView>
</ListView.View>
</ListView>

</Grid>
</Window>

[/code]





using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using System.Xml.Linq;

namespace WpfApplication2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
var data = new List<Test>();
data.Add(new Test { Title1 = "11111111111111111111111111111111111111" });
data.Add(new Test { Title1 = "22222222222222222222222222222222222222222222222222222" });
data.Add(new Test { Title1 = "3333333333333333333333" });
this.listView1.DataContext = data;
}
private void listView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
MessageBox.Show(((Test)e.AddedItems[0]).Title1);
}
}




public class Test
{
public string Title1 { get; set; }
}

}

booooook 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 taomanman 的回复:]
你先一个一个解决了,然后把他们集中合并一下,应该是没有问题的。
[/Quote]

我四个都解决了,但是,由于对xaml的语法不熟悉,四个凑不到一起。。。
暖枫无敌 2011-04-27
  • 打赏
  • 举报
回复
你先一个一个解决了,然后把他们集中合并一下,应该是没有问题的。
booooook 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 taomanman 的回复:]
(1)、

C# code

<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Name="lbx">
<ListView.Resources>
<Style TargetType="TextBlock" BasedOn="{StaticResource……
[/Quote]

这里四项功能,单独实现其中一个都是比较容易的。
但是把四个功能集成到一起。。。却不知如何做了。

暖枫无敌 2011-04-27
  • 打赏
  • 举报
回复
(1)、

<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Name="lbx">
<ListView.Resources>
<Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}">
<Setter Property="TextWrapping" Value="Wrap"></Setter>
</Style>
</ListView.Resources>
</ListView>

for (int i = 0; i < 5; i++)
lbx.Items.Add(new TextBlock() { Text = "sfdkjl sfdkjl sfdkjl sfdkjl sfdkjl sfdkjl sfdkjl sfdkjl sfdkjl sfdkjl sfdkjl " });


booooook 2011-04-27
  • 打赏
  • 举报
回复
有没有会的?能否提点提点。。
玉琳 2011-04-27
  • 打赏
  • 举报
回复
还真是不会,多用一点判断吧
至于可以选择,设置checkboxes属性试试,颜色就判断行数设置颜色值

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧