在WPF应用程序中使用DataTemplateSelector时,什么样的用户操作会触发DataTemplateSelector.SelectTemple?传递给“对象项”的是什么?
public class ProductTypeTemplateSelector : DataTemplateSelector
{
public DataTemplate OrangeTemplate { get; set; }
public DataTemplate AppleTemplate { get; set; }
public override DataTemplate SelectTemplate(object item,
DependencyObject container)
{
string product_type = (string)item;
if (product_type == "orange")
return OrangeTemplate;
else
return AppleTemplate;
}
}问题结束了。更新标题以帮助像我这样的新手搜索。
发布于 2013-10-23 04:43:32
假设您的第二个TabItem需要根据所选内容显示更新的Content。您可以在其中放置ContentControl,并将其Content绑定到VM/代码上的属性--后面是跟踪SelectedItem of DataGrid。我相信您会将您的SelectedItem的DataGrid of Tab1绑定到ViewModel/代码背后的属性上。假设属性是SelectedType,并且是string类型(从您的问题中可以看出)。
现在只需将ContentControl绑定到此属性并应用ContentTemplateSelector:
<ContentControl Content="{Binding DataContext.SelectedType, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}"
ContentTemplateSelector="{StaticResource myTemplateSelector}"/>在这里,包含SelectedType属性的VM/代码隐藏应该实现INotifyPropertyChanged,并为SelectedType引发属性更改。
发布于 2013-10-22 23:40:44
某些控件(例如ItemsControl)公开了允许您指定DataTemplateSelector的属性。
在呈现控件时,将为控件中的每个项调用SelectTemplate。item参数是模板对象本身,它将根据控件的不同而变化。例如,Iit可以是网格中的单元格,也可以是列表中的项。
因此,总之,您不需要触发它,方法将简单地由控件调用。
在同样的想法中,也有ContentTemplateSelector的
https://stackoverflow.com/questions/19529957
复制相似问题