首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件DataTemplate

条件DataTemplate
EN

Stack Overflow用户
提问于 2012-01-29 06:30:13
回答 1查看 20.8K关注 0票数 33

这就是我想要做的。我定义了2个数据模板,它们都引用了不同的用户控件。

代码语言:javascript
复制
<UserControl.Resources>
    <DataTemplate x:Key="myDataTemplate1">
        <Border BorderBrush="Black" BorderThickness="1">
            <myUserControl1 />
        </Border>
    </DataTemplate>
    <DataTemplate x:Key="myDataTemplate2">
            <Border BorderBrush="Black" BorderThickness="1">
                <myUserControl2/>
            </Border>
    </DataTemplate>
</UserControl.Resources>

我使用这些数据模板来显示使用ItemsControl的项目列表,如下所示:

代码语言:javascript
复制
<ItemsControl x:Name="myItemList" ItemTemplate="{StaticResource myDataTemplate1}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate />
    </ItemsControl.ItemsPanel>
</ItemsControl>

我希望ItemTemplate有条件地为myDataTemplate1或myDataTemplate1,这取决于整数变量的值分别为1或2。

我应该使用DataTriggers来完成这项工作吗?或者有其他方法可以做到这一点吗?感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-29 06:32:55

不要设置ItemTemplate,但要使用ItemTemplateSelector

当然,DataTriggers也可以,为选择器省去了额外的类。例如:

代码语言:javascript
复制
<ItemsControl.ItemTemplate>
    <DataTemplate>
        <ContentControl Content="{Binding}">
            <ContentControl.Style>
                <Style TargetType="ContentControl">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ThatProperty}" Value="1">
                            <Setter Property="ContentTemplate"
                                    Value="{StaticResource myDataTemplate1}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding ThatProperty}" Value="2">
                            <Setter Property="ContentTemplate"
                                    Value="{StaticResource myDataTemplate2}" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ContentControl.Style>
        </ContentControl>
    </DataTemplate>
</ItemsControl.ItemTemplate>
票数 57
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9049197

复制
相关文章

相似问题

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