情况:
我有一个DataGrid
项目可以属于不同类别的地方,比如A、B和Custom。每个类别都有自己的RowDetails
模板。可以更改项目的类别,如果发生这种情况,我也想更改模板(如有必要)。后面的 ViewModel 是一样的,我只是改变了界面元素(例如,模板 AI 中有一个TextBlock
,而模板 BI 中有一个TextBox
,两者Binding
在 VM 中都具有相同的属性)。
到目前为止我做了什么:
<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(红色边框,带感叹号)。即使模板为空,也会发生这种情况!在我看来,只是更改模板会使整个事情爆炸。
我究竟做错了什么?谢谢!