我有一个数据网格,我用组合框替换了标题。我通过在 wpf 中使用以下代码使这部分工作,但我的问题是我不想让第一列标题的组合框。
我试过这种方式:
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<EventSetter Event="Click" Handler="ColumnHeaderClick" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource ColumnHeaderToComboBoxConverter}">
<Binding Path="ColumnHeader"/>
<Binding Path="DataContext.FirstColumnHeader" ElementName="control" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ArticleAttributes, Source={x:Reference control}}">
<l:Interaction.Triggers>
<l:EventTrigger EventName="SelectionChanged">
<l:InvokeCommandAction Command="{Binding DataContext.ArticleAttributeCommand, Source={x:Reference control}}" CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}, Path=SelectedItem}" />
</l:EventTrigger>
</l:Interaction.Triggers>
</ComboBox>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.ColumnHeaderStyle>
在Multibinding部分,我想向转换器发送 2 个值:
作为第一个值,我试图发送当前列标题:
<Binding Path="ColumnHeader"/>
并且作为第二个值,每次我发送一个特定的值,即第一列标题:
<Binding Path="DataContext.FirstColumnHeader" ElementName="control" />
如果它们相同,我想在转换器中比较这两个然后返回 false 否则它应该返回 true (这意味着将组合框添加到列标题)。但是不会向名为 ColumnHeaderToComboBoxConverter 的转换器发送任何信息。
任何帮助将不胜感激。
我还附上了一张图片。