首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGrid动态改变RowDetailsTemplate

DataGrid动态改变RowDetailsTemplate
EN

Stack Overflow用户
提问于 2012-12-03 10:39:33
回答 1查看 1.6K关注 0票数 1

形势:

我有一个DataGrid,其中的项目可以属于不同的类别,比如说A、B和自定义。每个类别都有自己的RowDetails模板。项目的类别可以更改,当发生这种情况时,如果需要的话,我也希望更改模板。后面的ViewModel是相同的,我只是更改接口元素(例如,在模板A中,我有一个TextBlock,而在模板B中,我有一个TextBox,两者都带有一个Binding,在VM中具有相同的属性)。

到目前为止我所做的:

代码语言:javascript
复制
<DataGrid.RowDetailsTemplate>
    <DataTemplate>
        <Control x:Name="RowDetails" Focusable="False" />
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding TemplateID, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" Value="0">
                    <Setter TargetName="RowDetails" Property="Template" Value="{StaticResource TemplateA}" />
            </DataTrigger>
            <DataTrigger Binding="{Binding TemplateID, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" Value="1">
                <Setter TargetName="RowDetails" Property="Template" Value="{StaticResource TemplateB}" />
            </DataTrigger>
            <DataTrigger Binding="{Binding TemplateID, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" Value="2">
                <Setter TargetName="RowDetails" Property="Template" Value="{StaticResource TemplateCustom}" />
            </DataTrigger>
        </DataTemplate.Triggers>
    </DataTemplate>
</DataGrid.RowDetailsTemplate>

问题:

当我更改一个项目的类别时,我可以看到模板发生了变化,但是整个行得到了ValidationErrorTemplate (红色边框,带有感叹号)。即使模板是空的,也会发生这种情况!在我看来,仅仅是改变模板就能让整件事爆发。

我做错了什么?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-06 12:01:38

经过多次尝试和重试之后,我发现问题出现在模板内的ComboBox上:正如这里所说的,ComboBox属性的顺序很重要。把SelectedValue放在ItemsSource前面对我来说很有好处,而使用Triggers的方法也很有魅力。

尽管如此,我仍然对这样的解决方案感到震惊。我会把这个标记为答案,但我仍然愿意接受建议。

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

https://stackoverflow.com/questions/13681508

复制
相关文章

相似问题

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