我使用 MVVM-light-Toolkit 中的 EventToCommand 类来处理 WPF-DataGrid 中的 AutoGenerateColumn-Event。它在我的 Main-DataGrid 中工作正常,但我在 RowDetailsTemplate 中使用另一个 DataGrid,在这里我遇到了问题:
AutoGenerateColumn 在生成 EventToCommand-Object 之前触发。这个问题有解决办法吗?
这是我的 Xaml 代码的一部分:
<DataGrid DockPanel.Dock="Top" AutoGenerateColumns="True" Name="table" VerticalAlignment="Top" ItemsSource="{Binding PartBatchList}" IsReadOnly="True">
<i:Interaction.Triggers>
<i:EventTrigger EventName="AutoGeneratingColumn">
<hgc:EventToCommand Command="{Binding AutoGeneratingColumnCommand}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel Margin="30,0,30,30" Orientation="Vertical">
<Border CornerRadius="4" Padding="5" Background="White">
<DataGrid ItemsSource="{Binding Workpieces}"
CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False"
AutoGenerateColumns="True" AutoGeneratingColumn="WorkpieceListAutoGeneratingColumn">
<i:Interaction.Triggers>
<i:EventTrigger EventName="AutoGeneratingColumn">
<hgc:EventToCommand Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid},AncestorLevel=2}, Path=DataContext.AutoGeneratingColumnCommand}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</DataGrid>
</Border>
</StackPanel>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
代码隐藏文件中的事件处理程序 WorkpieceListAutoGenerateColumn 被调用,我的 ViewModel 中的命令从未被调用。
Andreas
原因应该是你不能在同一个对象/事件组合上有一个事件处理程序和一个事件命令。去除AutoGeneratingColumn="WorkpieceListAutoGeneratingColumn"
从您的 DataGrid 中应该调用该命令。 罢工>
我自己也遇到过这个问题:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)