在WPF中控制模板和数据模板之间的区别是什么?
当前回答
ControlTemplate定义视觉外观,dattemplate替换数据项的视觉外观。
示例:我想显示一个按钮从矩形到圆形的形式=>控制模板。
如果控件有复杂的对象,它只调用并显示ToString(),使用DataTemplate,您可以获得各种成员并显示和更改数据对象的值。
其他回答
基本上,ControlTemplate描述了如何显示控件,而DataTemplate描述了如何显示数据。
例如:
标签是一个控件,它将包括一个控制模板,该控制模板表示标签应该在一些内容(数据模板或其他控件)周围使用边框显示。
一个客户类是数据,将显示使用一个DataTemplate,可以说显示客户类型为一个包含两个textblock的StackPanel,一个显示名称,另一个显示电话号码。这可能是有帮助的注意,所有的类都显示使用DataTemplates,你将通常使用默认模板,这是一个TextBlock的文本属性设置为对象的ToString方法的结果。
ControlTemplate:表示控件样式。
DataTemplate:表示数据样式(您希望如何显示数据)。
所有控件都使用可以通过template属性重写的默认控件模板。
例如 按钮模板是控件模板。 按钮内容模板是一个数据模板
<Button VerticalAlignment="Top" >
<Button.Template>
<ControlTemplate >
<Grid>
<Rectangle Fill="Blue" RadiusX="20" RadiusY="20"/>
<Ellipse Fill="Red" />
<ContentPresenter Content="{Binding}">
<ContentPresenter.ContentTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="50">
<TextBlock Text="Name" Margin="5"/>
<TextBox Text="{Binding UserName, Mode=TwoWay}" Margin="5" Width="100"/>
<Button Content="Show Name" Click="OnClickShowName" />
</StackPanel>
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
public String UserName
{
get { return userName; }
set
{
userName = value;
this.NotifyPropertyChanged("UserName");
}
}
ControlTemplate定义视觉外观,dattemplate替换数据项的视觉外观。
示例:我想显示一个按钮从矩形到圆形的形式=>控制模板。
如果控件有复杂的对象,它只调用并显示ToString(),使用DataTemplate,您可以获得各种成员并显示和更改数据对象的值。
通常情况下,控件是为其本身而呈现的,并不反映底层数据。例如,一个Button不会被绑定到业务对象上——它的存在纯粹是为了可以被点击。然而,ContentControl或ListBox通常出现,以便为用户显示数据。
因此,DataTemplate用于为底层数据提供可视化结构,而ControlTemplate与底层数据无关,只是为控件本身提供可视化布局。
一个ControlTemplate通常只包含TemplateBinding表达式,绑定回控件本身的属性,而一个DataTemplate将包含标准binding表达式,绑定到它的DataContext(业务/域对象或视图模型)的属性。
控制模板-改变元素的外观。例如,按钮可以包含图像和文本
DataTemplate——使用元素表示底层数据。
推荐文章
- 在窗口上设置设计时间DataContext是一个编译器错误?
- 调用线程必须是STA,因为许多UI组件都要求这一点
- ContentControl和ContentPresenter有什么区别?
- WPF中控制模板和数据模板的区别
- 如何隐藏关闭按钮在WPF窗口?
- UI线程上的任务继续
- WPF数据绑定:我如何访问“父”数据上下文?
- 从System.Drawing.Bitmap中加载WPF BitmapImage
- 我应该使用什么MVVM框架?
- 在WPF中引入一个窗口到前面
- 窗口高度=“自动”未按预期工作
- 我如何得到一个动画gif在WPF工作?
- ListBox和ListView的区别是什么
- MVVM:从开始到结束的教程?
- 按类型查找WPF窗口中的所有控件