首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTrigger设置模板

DataTrigger设置模板
EN

Stack Overflow用户
提问于 2012-06-15 22:14:39
回答 2查看 476关注 0票数 0

我不得不使用SetTemplate,我使用了DataTrigger,但它不起作用。

我的代码:

代码语言:javascript
复制
<Style TargetType="{x:Type local:My_type}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding GUID, RelativeSource={RelativeSource AncestorType={x:Type local:MyClassViewControl}}}" 
                     Value="id1">
                <Setter Property="Template" Value="{StaticResource FirstTemplate}" />
        </DataTrigger>
        <DataTrigger Binding="{Binding GUID, 
                RelativeSource={RelativeSource AncestorType={x:Type local:MyClassViewControl}}}" 
                     Value="id2">
            <Setter Property="Template" Value="{StaticResource SecondTemplate}" />
        </DataTrigger>
    </Style.Triggers>
</Style>

Here就是一个例子。为什么我的代码不能工作?GUID没有错误("id1“或"id2")

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-18 17:03:45

我找到了解决方案:在C#中创建TemplateSelector:

代码语言:javascript
复制
public class GUIDTemplateSelector : DataTemplateSelector
{
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        FrameworkElement element = container as FrameworkElement;
        if (item != null && element != null)
        {
            string GUID = item as string;
            if (GUID != null)
            {
                if (GUID.Equals("id1"))
                {
                    return element.FindResource("FirstTemplate") as DataTemplate;
                }
                if (GUID.Equals("id2"))
                {
                    return element.FindResource("SecondTemplate") as DataTemplate;
                }
            }
        }
        return null;
    }
}

在我的XAML文件中:

代码语言:javascript
复制
<local:GUIDTemplateSelector x:Key="TheGUIDControlTemplateSelector"/>

<Style TargetType="{x:Type My_type}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:My_type}">
                <ContentControl ContentTemplateSelector="{StaticResource TheGUIDTemplateSelector}" Content="{Binding GUID,RelativeSource={RelativeSource AncestorType={x:Type local:My_type}}}"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
票数 0
EN

Stack Overflow用户

发布于 2012-06-15 22:25:59

我想这是

代码语言:javascript
复制
"{Binding GUID, RelativeSource={RelativeSource 
      AncestorType={x:Type local:MyClassViewControl}}}"

应该是

代码语言:javascript
复制
"{Binding GUID, RelativeSource={RelativeSource FindAncestor, 
      AncestorType={x:Type local:MyClassViewControl}}}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11052386

复制
相关文章

相似问题

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