【发布时间】:2013-04-21 23:48:33
【问题描述】:
我有一个使用 MVVM 原理的 wpf 应用程序。在这个应用程序中,我有一个数据网格,我希望根据绑定到数据网格行的对象中的基础属性的值,让每一行在 6 个可能的数据模板之一之间进行选择。
目标: 我不想使用后面的代码,并且想避免使用数据模板选择器。我想使用数据触发器从不同的数据模板中为每一行的 DetailsTemplate 进行选择。
尝试: 我尝试在 DataGrid 中定义一个数据触发器,如下所示,但它不起作用。
<DataGrid Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="3" MinHeight="300"
ItemsSource="{Binding TrackingCollection}"
CanUserAddRows="False" CanUserDeleteRows="False"
SelectionMode="Single" SelectedItem="{Binding SelectedTracking, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding tracking_action.chrCode}" Value="RC">
<!-- RECIEVING -->
<Setter Property="DetailsTemplate" Value="{StaticResource FTC_TrackingReceivingDetailTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding tracking_action.chrCode}" Value="SH">
<!-- SHIPPING -->
<Setter Property="DetailsTemplate" Value="{StaticResource FTC_TrackingShippingDetailTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding tracking_action.chrCode}" Value="ST">
<!-- STOCKING -->
<Setter Property="DetailsTemplate" Value="{StaticResource FTC_TrackingStockingDetailTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding tracking_action.chrCode}" Value="OR">
<!-- ORDERING -->
<Setter Property="DetailsTemplate" Value="{StaticResource FTC_TrackingOrderingDetailTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding tracking_action.chrCode}" Value="RT">
<!-- RETURNING -->
<Setter Property="DetailsTemplate" Value="{StaticResource FTC_TrackingReturningDetailTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding tracking_action.chrCode}" Value="TR">
<!-- TRANSFERING -->
<Setter Property="DetailsTemplate" Value="{StaticResource FTC_TrackingTransferingDetailTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
<DataGrid.Columns>
''column definitions go here
</DataGrid.Columns>
</DataGrid>
错误: 当我运行该应用程序时,我收到以下错误:
'向类型集合添加值 'System.Windows.Controls.ItemCollection' 引发了异常。线 编号“137”和行位置“35”。
如果我从上面的数据网格定义中删除样式标记/内容,此错误就会消失。
谁能帮我根据该行中的属性值定义该行的数据模板。
提前谢谢你。
【问题讨论】:
标签: .net wpf mvvm datagrid datatemplate