您的位置:首页 > 其它

WPF中ListView小Demo的数据绑定应用.

2007-05-10 16:51 537 查看
WPF中的数据绑定非常的好用,下面的例子可以说明这点.

我们在Xaml代码中创建一个ListView
我们设置ListView中的样式绑定为静态绑定
分别定义三个列用来绑定数据ID,Name,Balance
代码如下:
<ListView
Name="listView"
ItemContainerStyle="{StaticResource ItemContStyle}"
ItemsSource="{Binding}"
>
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding ID}" />
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Balance" Width="140">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Balance}" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>

我们在资源中增加下列代码:
<Style x:Key="ItemContStyle" TargetType="{x:Type ListViewItem}">
<Style.Resources>
<LinearGradientBrush x:Key="ProfitBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0.1" Color="#AA00CC00" />
<GradientStop Offset="0.8" Color="#55008800" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="LossBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0.1" Color="#AACC0000" />
<GradientStop Offset="0.8" Color="#55880000" />
</LinearGradientBrush>
<local:NumberToPolarValueConverter x:Key="PolarValueConv" />
</Style.Resources>

<Setter Property="HorizontalContentAlignment" Value="Stretch" />

<Style.Triggers>
<DataTrigger Binding="{Binding Balance, Converter={StaticResource PolarValueConv}}" Value="+1">
<Setter Property="Background" Value="{StaticResource ProfitBrush}" />
</DataTrigger>
<DataTrigger Binding="{Binding Balance, Converter={StaticResource PolarValueConv}}" Value="-1">
<Setter Property="Background" Value="{StaticResource LossBrush}" />
</DataTrigger>
</Style.Triggers>
</Style>
在window中增加:
xmlns:local="clr-namespace:HighlightingItemsInWPFListView"
在窗体后台代码处增加下列代码:

public Window1()
{
InitializeComponent();
this.listView.DataContext = CreateDataTable();
}

DataTable CreateDataTable()
{
DataTable tbl = new DataTable( "Customers" );

tbl.Columns.Add( "ID", typeof( int ) );
tbl.Columns.Add( "Name", typeof( string ) );
tbl.Columns.Add( "Balance", typeof( decimal ) );

tbl.Rows.Add( 1, "John Doe", 100m );
tbl.Rows.Add( 2, "Jane Dorkenheimer", -209m );
tbl.Rows.Add( 3, "Fred Porkroomio", 0m );
tbl.Rows.Add( 4, "Mike Spike", 550m );
tbl.Rows.Add( 5, "Doris Yakovakovich", 0m );
tbl.Rows.Add( 6, "Boris Zinkwolf", -25m );

return tbl;
}

创建一个类,用来管理调用的资源,代码如下:
[ValueConversion( typeof( object ), typeof( int ) )]
public class NumberToPolarValueConverter : IValueConverter
{
public object Convert(
object value, Type targetType,
object parameter, CultureInfo culture )
{
double number = (double)System.Convert.ChangeType( value, typeof(double) );

if( number < 0.0 )
return -1;

if( number == 0.0 )
return 0;

return +1;
}

public object ConvertBack(
object value, Type targetType,
object parameter, CultureInfo culture )
{
throw new NotSupportedException( "ConvertBack not supported" );
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: