继续聊WPF——动态数据模板
来源:未知 责任编辑:责任编辑 发表时间:2013-11-15 19:50 点击:次
我为啥称之为“动态数据模板”?先看看下面的截图,今天,我们就是要实现这种功能。
大概是这样的,我们定义的DataTemplate是通过触发器动态应用到ComboBoxItem 上。
这个下拉列表控件绑定了一个Person集合,Person类的定义如下:
[csharp]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
public override string ToString()
{
return Name;
}
}
这里重写了ToString方法,因为ComboBox生成的项是调用对象的ToString方法的,为了能不设置数据模板的前提下正确显示列表项,需要重写ToString方法,默认显示姓名属性。
然后,我们为ComboBoxItem定义一个处于高亮状态时使用的数据模板,也就是当鼠标移到项上时发生。
[html]
<Window.Resources>
<!--
当项高亮显示时使用的数据模板
-->
<DataTemplate x:Key="hightlightTmp">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<StackPanel Margin="0,5,0,0" Grid.Row="0" Orientation="Horizontal">
<TextBlock Margin="2,0" FontWeight="Bold" FontSize="14">
<TextBlock.Text>
<Binding Path="Name"
StringFormat="姓名:{0}"/>
大概是这样的,我们定义的DataTemplate是通过触发器动态应用到ComboBoxItem 上。
这个下拉列表控件绑定了一个Person集合,Person类的定义如下:
[csharp]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
public override string ToString()
{
return Name;
}
}
这里重写了ToString方法,因为ComboBox生成的项是调用对象的ToString方法的,为了能不设置数据模板的前提下正确显示列表项,需要重写ToString方法,默认显示姓名属性。
然后,我们为ComboBoxItem定义一个处于高亮状态时使用的数据模板,也就是当鼠标移到项上时发生。
[html]
<Window.Resources>
<!--
当项高亮显示时使用的数据模板
-->
<DataTemplate x:Key="hightlightTmp">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<StackPanel Margin="0,5,0,0" Grid.Row="0" Orientation="Horizontal">
<TextBlock Margin="2,0" FontWeight="Bold" FontSize="14">
<TextBlock.Text>
<Binding Path="Name"
StringFormat="姓名:{0}"/>
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>