首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTrigger溢出异常

DataTrigger溢出异常
EN

Stack Overflow用户
提问于 2013-01-04 18:01:55
回答 1查看 94关注 0票数 0

这怎么可能是一个溢出异常...?

代码语言:javascript
复制
<DataTemplate x:Key="ElementTemplate">
            <StackPanel Orientation="Horizontal">
                <StackPanel.Style>
                    <Style TargetType="{x:Type StackPanel}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Converter={StaticResource TypeConv}}" Value="{x:Type models:GroupModel}">
                                <Setter Property="Margin" Value="5 0 0 0"></Setter>
                                <Setter Property="DataContext" Value="{Binding Model}"></Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </StackPanel.Style>
                <TextBlock Text="{Binding Name}"></TextBlock>
                ...
             <StackPanel/>
<DataTemplate/>

原因:这是一个通常需要Model A作为数据类型的模板(至少有25个UI控件)。DataTemplateListvVew ItemTemplate。但是数据类型可以是Model B类型。Model B有一个名为' Model‘的属性,它的类型是Model A。因此,我不想复制粘贴整个块模板并使用样式触发器或DataTemplate选择器,我只想更改绑定t(从“{DataContex}”更改为"{Binding Model}")

有人有什么建议或解决方案吗?

谢谢!

编辑:Converter返回输入值的类型(数据对象本身)。这样,我就可以知道模型B何时正在使用模板,从而更改DataContext。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-04 19:13:09

我建议在设置数据上下文和触发DataTrigger之间避免可能的递归

ModelAModelB都实现一个名为IListViewModel的公共接口,例如,使用一个属性getter:

代码语言:javascript
复制
public interface IListViewModel
{
    ModelA Model {get;}
}

然后,ModelA的实现将返回this,而ModelB的实现将返回this.ModelA DataTemplate只是简单地绑定到所给出的任何视图模型的.Model

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

https://stackoverflow.com/questions/14154926

复制
相关文章

相似问题

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