首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何触发SelectTemplate /如何使用ContentTemplateSelector

如何触发SelectTemplate /如何使用ContentTemplateSelector
EN

Stack Overflow用户
提问于 2013-10-22 23:11:45
回答 2查看 1.1K关注 0票数 1

在WPF应用程序中使用DataTemplateSelector时,什么样的用户操作会触发DataTemplateSelector.SelectTemple?传递给“对象项”的是什么?

代码语言:javascript
复制
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;
    }
}

问题结束了。更新标题以帮助像我这样的新手搜索。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-23 04:43:32

假设您的第二个TabItem需要根据所选内容显示更新的Content。您可以在其中放置ContentControl,并将其Content绑定到VM/代码上的属性--后面是跟踪SelectedItem of DataGrid。我相信您会将您的SelectedItemDataGrid of Tab1绑定到ViewModel/代码背后的属性上。假设属性是SelectedType,并且是string类型(从您的问题中可以看出)。

现在只需将ContentControl绑定到此属性并应用ContentTemplateSelector:

代码语言:javascript
复制
<ContentControl Content="{Binding DataContext.SelectedType, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" 
                ContentTemplateSelector="{StaticResource myTemplateSelector}"/>

在这里,包含SelectedType属性的VM/代码隐藏应该实现INotifyPropertyChanged,并为SelectedType引发属性更改。

票数 2
EN

Stack Overflow用户

发布于 2013-10-22 23:40:44

某些控件(例如ItemsControl)公开了允许您指定DataTemplateSelector的属性。

在呈现控件时,将为控件中的每个项调用SelectTemplateitem参数是模板对象本身,它将根据控件的不同而变化。例如,Iit可以是网格中的单元格,也可以是列表中的项。

因此,总之,您不需要触发它,方法将简单地由控件调用。

在同样的想法中,也有ContentTemplateSelector

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19529957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档